00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00036 #ifndef OW_HTTPUTILS_HPP_
00037 #define OW_HTTPUTILS_HPP_
00038 #include "OW_config.h"
00039 #include "OW_Array.hpp"
00040 #include "OW_Map.hpp"
00041 #include "OW_String.hpp"
00042 #include "OW_Base64FormatException.hpp"
00043 #include <iosfwd>
00044
00045 namespace OW_NAMESPACE
00046 {
00047
00048 typedef Map<String, String> HTTPHeaderMap;
00049 namespace HTTPUtils
00050 {
00051 extern OW_HTTP_API const char* const Header_BypassLocker;
00052 extern OW_HTTP_API const char* const HeaderValue_true;
00053 extern OW_HTTP_API const char* const HeaderValue_false;
00063 OW_HTTP_API bool parseHeader(HTTPHeaderMap& map, Array<String>& array,
00064 std::istream& istr);
00072 OW_HTTP_API bool parseHeader(HTTPHeaderMap& map, std::istream& istr);
00077 OW_HTTP_API String date( void );
00083 OW_HTTP_API String status2String(int code);
00088 OW_HTTP_API String getCounterStr();
00093 OW_HTTP_API String base64Decode(const String& arg);
00099 OW_HTTP_API Array<char> base64Decode(const char* src);
00104 OW_HTTP_API String base64Encode(const String& arg);
00110 OW_HTTP_API String base64Encode(const char* src);
00117 OW_HTTP_API String base64Encode(const UInt8* src, size_t len);
00118 #ifndef OW_DISABLE_DIGEST
00119
00120 OW_HTTP_API void DigestCalcHA1(
00121 const String &sAlg,
00122 const String &sUserName,
00123 const String &sRealm,
00124 const String &sPassword,
00125 const String &sNonce,
00126 const String &sCNonce,
00127 String &sSessionKey
00128 );
00129
00130 OW_HTTP_API void DigestCalcResponse(
00131 const String &sHA1,
00132 const String &sNonce,
00133 const String &sNonceCount,
00134 const String &sCNonce,
00135 const String &sQop,
00136 const String &sMethod,
00137 const String &sDigestUri,
00138 const String &sHEntity,
00139 String &Response
00140 );
00141 #endif
00142
00148 OW_HTTP_API bool headerHasKey(const HTTPHeaderMap& headers,
00149 const String& key);
00156 OW_HTTP_API String getHeaderValue(const HTTPHeaderMap& headers,
00157 const String& key);
00164 OW_HTTP_API void addHeader(Array<String>& headers,
00165 const String& key, const String& value);
00174 OW_HTTP_API void eatEntity(std::istream& istr);
00182 OW_HTTP_API void decodeBasicCreds(const String& info, String& name,
00183 String& password);
00184
00185 OW_HTTP_API bool buildMap(HTTPHeaderMap& map, std::istream& istr);
00192 OW_HTTP_API String escapeCharForURL(char c);
00193
00194 OW_DECLARE_APIEXCEPTION(UnescapeCharForURL, OW_HTTP_API);
00204 OW_HTTP_API char unescapeCharForURL(const char* str);
00211 OW_HTTP_API String escapeForURL(const String& input);
00218 OW_HTTP_API String unescapeForURL(const String& input);
00219 };
00220
00221 }
00222
00223 namespace OW_HTTPUtils = OW_NAMESPACE::HTTPUtils;
00224
00225 #endif // OW_HTTPUTILS_HPP_