/pigeoncms/App_Code/modules/Westwind.IternetTools/wwHttpUtils.cs

http://pigeoncms.googlecode.com/ · C# · 102 lines · 67 code · 14 blank · 21 comment · 22 complexity · 1338489afc094ee5fe9689cc33cad808 MD5 · raw file

  1. using System;
  2. using System.Text;
  3. using System.IO;
  4. namespace Westwind.InternetTools
  5. {
  6. /// <summary>
  7. /// wwHttp Utility class to provide UrlEncoding without the need to use
  8. /// the System.Web libraries (too much overhead)
  9. /// </summary>
  10. public class wwHttpUtils
  11. {
  12. /// <summary>
  13. /// UrlEncodes a string without the requirement for System.Web
  14. /// </summary>
  15. /// <param name="String"></param>
  16. /// <returns></returns>
  17. public static string UrlEncode(string InputString)
  18. {
  19. StringReader sr = new StringReader( InputString);
  20. StringBuilder sb = new StringBuilder( InputString.Length );
  21. while (true)
  22. {
  23. int lnVal = sr.Read();
  24. if (lnVal == -1)
  25. break;
  26. char lcChar = (char) lnVal;
  27. if (lcChar >= 'a' && lcChar < 'z' ||
  28. lcChar >= 'A' && lcChar < 'Z' ||
  29. lcChar >= '0' && lcChar < '9')
  30. sb.Append(lcChar);
  31. else if (lcChar == ' ')
  32. sb.Append("+");
  33. else
  34. sb.AppendFormat("%{0:X2}",lnVal);
  35. }
  36. return sb.ToString();
  37. }
  38. /// <summary>
  39. /// UrlDecodes a string without requiring System.Web
  40. /// </summary>
  41. /// <param name="InputString">String to decode.</param>
  42. /// <returns>decoded string</returns>
  43. public static string UrlDecode(string InputString)
  44. {
  45. char temp = ' ';
  46. StringReader sr = new StringReader(InputString);
  47. StringBuilder sb = new StringBuilder( InputString.Length );
  48. while (true)
  49. {
  50. int lnVal = sr.Read();
  51. if (lnVal == -1)
  52. break;
  53. char TChar = (char) lnVal;
  54. if (TChar == '+')
  55. sb.Append(' ');
  56. else if(TChar == '%')
  57. {
  58. // *** read the next 2 chars and parse into a char
  59. temp = (char) Int32.Parse(((char) sr.Read()).ToString() + ((char) sr.Read()).ToString(),
  60. System.Globalization.NumberStyles.HexNumber);
  61. sb.Append(temp);
  62. }
  63. else
  64. sb.Append(TChar);
  65. }
  66. return sb.ToString();
  67. }
  68. /// <summary>
  69. /// Retrieves a value by key from a UrlEncoded string.
  70. /// </summary>
  71. /// <param name="UrlEncodedString">UrlEncoded String</param>
  72. /// <param name="Key">Key to retrieve value for</param>
  73. /// <returns>returns the value or "" if the key is not found or the value is blank</returns>
  74. public static string GetUrlEncodedKey(string UrlEncodedString, string Key)
  75. {
  76. UrlEncodedString = "&" + UrlEncodedString + "&";
  77. int Index = UrlEncodedString.ToLower().IndexOf("&" + Key.ToLower() + "=");
  78. if (Index < 0)
  79. return "";
  80. int lnStart = Index + 2 + Key.Length;
  81. int Index2 = UrlEncodedString.IndexOf("&",lnStart);
  82. if (Index2 < 0)
  83. return "";
  84. string Result = wwHttpUtils.UrlDecode( UrlEncodedString.Substring(lnStart,Index2 - lnStart) );
  85. return Result;
  86. }
  87. }
  88. }