/** * CRXHttpRequest.cpp */ #ifdef _WIN32 # pragma warning (disable:4996) #endif #include "CRXHttpRequest.h" #include #include #include CRXHttpRequest::CRXHttpRequest (void) : mMethod (""), mUrl (""), mHttpVersion (""), mProtocol (""), mHost (""), mPort (0) { } void CRXHttpRequest::SetRequest (const char * aHttpRequest) { SetMessage (aHttpRequest); } std::string CRXHttpRequest::GetRequest (void) const { return GetMessage (); } std::string CRXHttpRequest::GetURL (void) const { return mUrl; } std::string CRXHttpRequest::GetHost (void) const { return mHost; } int CRXHttpRequest::GetPort (void) const { return mPort; } CRXHttpRequest & CRXHttpRequest::operator = (const char * aHttpMessage) { SetRequest (aHttpMessage); return *this; } void CRXHttpRequest::Parse (void) { std::string aHttpRequestUri = ""; char aMethod[64] = {0x00, }; char aUrl[1024] = {0x00, }; char aHttpVersion[64] = {0x00, }; char aProtocol[32] = {0x00, }; char aHostBuffer[512] = {0x00, }; char aHost[512] = {0x00, }; char aPortBuffer[32] = {0x00, }; int aPort = 0; /*----------------------------------------------------------------*/ aHttpRequestUri = GetRequest ().substr (0, mHttpMessage.find ('\r')); /*---------------------------------------------------------------- * 1. separate first line to , and *----------------------------------------------------------------*/ sscanf (aHttpRequestUri.c_str (), "%[^ ] %[^ ] %[^ ]\r\n", aMethod, aUrl, aHttpVersion); mMethod.assign (aMethod); mUrl.assign (aUrl); mHttpVersion.assign (aHttpVersion); /*---------------------------------------------------------------- * 2. separate to and *----------------------------------------------------------------*/ sscanf (mUrl.c_str (), "%[^://]://%[^/]", aProtocol, aHostBuffer); mProtocol.assign (aProtocol); /*---------------------------------------------------------------- * 3. separate to : *----------------------------------------------------------------*/ sscanf (aHostBuffer, "%[^:]:%s", aHost, aPortBuffer); mHost.assign (aHost); aPort = atoi (aPortBuffer); mPort = aPort == 0 ? 80 : aPort; /*----------------------------------------------------------------*/ }