/** * CRXHttpRequest.cpp */ #ifdef _WIN32 # pragma warning (disable:4996) #endif #include "CRXHttpRequest.h" #include #include CRXHttpRequest::CRXHttpRequest (void) : mPort (0) { /*----------------------------------------------------------------*/ /*----------------------------------------------------------------*/ } CRXHttpRequest::~CRXHttpRequest (void) { /*----------------------------------------------------------------*/ Reset (); /*----------------------------------------------------------------*/ } void CRXHttpRequest::Reset (void) { /*----------------------------------------------------------------*/ ResetMessage (); /*----------------------------------------------------------------*/ } void CRXHttpRequest::SetHeader (const char * aHttpRequest) { /*----------------------------------------------------------------*/ SetMessage (aHttpRequest); /*----------------------------------------------------------------*/ } std::string CRXHttpRequest::GetHeader (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) { /*----------------------------------------------------------------*/ SetHeader (aHttpMessage); /*----------------------------------------------------------------*/ return *this; } void CRXHttpRequest::Parse (void) { std::string aHttpRequestUri = ""; char aMethod[64] = {0x00, }; char aUrl[1024 * 4] = {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 = GetHeader ().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; /*----------------------------------------------------------------*/ }