30 # pragma warning(disable : 4786)
35 REQUESTMETHOD_OPTIONS,
42 REQUESTMETHOD_CONNECT,
62 const std::string & irsParseContentType);
93 DEPRECATED(
"Use RemoteAddress()")
101 DEPRECATED(
"Use RemotePort()")
113 int Id()
const {
return m_nRequestId; }
125 RequestMethod
Method()
const {
return m_nRequestMethod; }
131 bool Secure()
const {
return m_bSecure; }
143 const std::string &
Uri()
const {
return m_sUri; }
149 const std::string &
HttpVersion()
const {
return m_sHttpVersionNumber; }
155 const std::string &
Body()
const {
return m_sBody; }
161 StringCaseMap &
Headers() {
return m_oRequestHeaders; }
182 return m_oFormValueMap[name];
192 if (m_oRequestHeaders.find(name) != m_oRequestHeaders.end()) {
193 return m_oRequestHeaders[name];
195 return std::string();
205 void SetHeader(
const std::string & name,
const std::string & value)
207 m_oRequestHeaders[name] = value;
217 if (m_oCookieMap.find(name) != m_oCookieMap.end()) {
218 return m_oCookieMap[name];
220 return std::string();
232 void GetFormDataFromString(
const std::string &irsString);
235 enum HttpParseStates {
236 HTTPPARSESTATE_INVALID = 0,
237 HTTPPARSESTATE_REQUEST,
238 HTTPPARSESTATE_HEADERS,
240 HTTPPARSESTATE_BODYCHUNK,
241 HTTPPARSESTATE_BODYTRAILER,
242 HTTPPARSESTATE_BODYTRAILER2,
243 HTTPPARSESTATE_COMPLETEREQUEST,
244 HTTPPARSESTATE_INVALIDREQUEST
248 enum ParseMultipartFormDataResult {
249 PARSEMULTIPARTFORMDATA_INVALID = 0,
250 PARSEMULTIPARTFORMDATA_SUCCESS,
251 PARSEMULTIPARTFORMDATA_FAILED
255 enum ParseSubbodyResult {
256 PARSESUBBODY_INVALID = 0,
257 PARSESUBBODY_SUCCESS,
258 PARSESUBBODY_INVALIDSUBBODY,
263 ParseMultipartFormDataResult ParseMultipartFormData();
270 ParseSubbodyResult ParseSubbody(std::string sSubBody);
273 HttpParseStates ParseData(std::string & irsData);
276 int ParseCookieData (std::string & irsData);
279 HttpParseStates m_nCurrentHttpParseState;
282 RequestMethod m_nRequestMethod;
288 std::string m_sOriginalUri;
291 std::string m_sHttpVersionNumber;
297 std::string m_sLastHeaderName;
303 StringCaseMap m_oRequestHeaders;
306 FormValueMap m_oFormValueMap;
309 CookieMap m_oCookieMap;
322 std::string m_sParseContentType;
338 std::string GetNextLine(std::string & buffer);
345 RequestMethod GetRequestMethodFromString(
const std::string & method);
353 bool IsMultivalHeader(
const std::string &header);
361 bool MultivalHeaderContains(
const std::string &header,
const std::string &value);
363 #endif // HTTPREQUEST_H