home *** CD-ROM | disk | FTP | other *** search
/ Game Level Design / GLDesign.bin / Software / UnrealEngine2Runtime / UE2Runtime-22262001_Demo.exe / UWeb / Classes / WebRequest.uc < prev    next >
Text File  |  2003-10-22  |  2KB  |  112 lines

  1. class WebRequest extends Object
  2.     native
  3.     noexport;
  4.  
  5. enum ERequestType
  6. {
  7.     Request_GET,
  8.     Request_POST
  9. };
  10.  
  11. var string URI;
  12. var string Username;
  13. var string Password;
  14. var int ContentLength;
  15. var string ContentType;
  16. var ERequestType RequestType;
  17. var private native const int VariableMap[5];    // TMultiMap<FString, FString>!
  18.  
  19. native final function string DecodeBase64(string Encoded);
  20. native final function AddVariable(string VariableName, string Value);
  21. native final function string GetVariable(string VariableName, optional string DefaultValue);
  22. native final function int GetVariableCount(string VariableName);
  23. native final function string GetVariableNumber(string VariableName, int Number, optional string DefaultValue);
  24.  
  25. function ProcessHeaderString(string S)
  26. {
  27.     local int i;
  28.  
  29.     if(Left(S, 21) ~= "Authorization: Basic ")
  30.     {
  31.         S = DecodeBase64(Mid(S, 21));
  32.         i = InStr(S, ":");
  33.         if(i != -1)
  34.         {
  35.             Username = Left(S, i);
  36.             Password = Mid(S, i+1);
  37.         }
  38.     }
  39.     else
  40.     if(Left(S, 16) ~= "Content-Length: ")
  41.         ContentLength = Int(Mid(S, 16));
  42.     else
  43.     if(Left(S, 14) ~= "Content-Type: ")
  44.         ContentType = Mid(S, 14);
  45. }
  46.  
  47. function DecodeFormData(string Data)
  48. {
  49.     local string Token[2], ch;
  50.     local int i;
  51.     local int t;
  52.  
  53.     t = 0;
  54.     for(i=0;i<Len(Data);i++)
  55.     {
  56.         ch = mid(Data, i, 1);
  57.         switch(ch)
  58.         {
  59.         case "+":
  60.             Token[t] = Token[t]$" ";
  61.             break;
  62.         case "&":
  63.         case "?":
  64.             if(Token[0] != "")
  65.                 AddVariable(Token[0], Token[1]);            
  66.             Token[0] = "";
  67.             Token[1] = "";
  68.             t = 0;
  69.             break;
  70.         case "=":
  71.             if(t == 0)
  72.                 t = 1;
  73.             else
  74.                 Token[t] = Token[t]$"=";
  75.             break;
  76.         case "%":
  77.             Token[t] = Token[t]$Chr(16 * GetHexDigit(mid(Data, ++i, 1)) + GetHexDigit(mid(Data, ++i, 1)));
  78.             break;
  79.         default:
  80.             Token[t] = Token[t]$ch;
  81.         }
  82.     }
  83.  
  84.     if(Token[0] != "")
  85.         AddVariable(Token[0], Token[1]);
  86. }
  87.  
  88. function int GetHexDigit(string D)
  89. {
  90.     switch(caps(D))
  91.     {
  92.     case "0": return 0;
  93.     case "1": return 1;
  94.     case "2": return 2;
  95.     case "3": return 3;
  96.     case "4": return 4;
  97.     case "5": return 5; 
  98.     case "6": return 6; 
  99.     case "7": return 7; 
  100.     case "8": return 8; 
  101.     case "9": return 9; 
  102.     case "A": return 10; 
  103.     case "B": return 11; 
  104.     case "C": return 12; 
  105.     case "D": return 13; 
  106.     case "E": return 14; 
  107.     case "F": return 15; 
  108.     }
  109.  
  110.     return 0;
  111. }
  112.