Changeset 28 in cheroxy for trunk/src/CRXHttpRequest.cpp


Ignore:
Timestamp:
11/16/12 13:07:05 (11 years ago)
Author:
cheese
Message:

#1 add filter class

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/CRXHttpRequest.cpp

    r26 r28  
    5050}
    5151
    52 std::string
    53 CRXHttpRequest::GetURL (void) const
    54 {
    55     /*----------------------------------------------------------------*/
    56     /*----------------------------------------------------------------*/
    57 
    58     return mUrl;
    59 }
    60 
    61 std::string
    62 CRXHttpRequest::GetHost (void) const
    63 {
    64     /*----------------------------------------------------------------*/
    65     /*----------------------------------------------------------------*/
    66 
    67     return mHost;
    68 }
    69 
    70 int
    71 CRXHttpRequest::GetPort (void) const
    72 {
    73     /*----------------------------------------------------------------*/
    74     /*----------------------------------------------------------------*/
    75 
    76     return mPort;
    77 }
    78 
    7952CRXHttpRequest &
    8053CRXHttpRequest::operator = (const char * aHttpMessage)
     
    9063CRXHttpRequest::Parse (void)
    9164{
    92     std::string aHttpRequestUri     = "";
     65    std::string aHttpRequestUrl;
    9366
    9467    char        aMethod[64]         = {0x00, };
     
    10376
    10477    /*----------------------------------------------------------------*/
    105     aHttpRequestUri = GetHeader ().substr (0, mHttpMessage.find ('\r'));
     78    aHttpRequestUrl = GetHeader ().substr (0, mHttpMessage.find ('\r'));
    10679
    10780    /*----------------------------------------------------------------
    10881     * 1. separate first line to <METHOD>, <URL> and <VERSION>
    10982     *----------------------------------------------------------------*/
    110     sscanf (aHttpRequestUri.c_str (), "%[^ ] %[^ ] %[^ ]\r\n", aMethod, aUrl, aHttpVersion);
     83    sscanf (aHttpRequestUrl.c_str (), "%[^ ] %[^ ] %[^ ]\r\n", aMethod, aUrl, aHttpVersion);
    11184    mMethod.assign (aMethod);
    11285    mUrl.assign (aUrl);
    11386    mHttpVersion.assign (aHttpVersion);
     87
     88    ParseFileExtension ();
    11489
    11590    /*----------------------------------------------------------------
     
    129104    /*----------------------------------------------------------------*/
    130105}
     106
     107void
     108CRXHttpRequest::ParseFileExtension (void)
     109{
     110    std::string aFilename;
     111
     112    size_t      aFilenameOffset     = 0;
     113    size_t      aParameterPosition  = 0;
     114    size_t      aSlashPosition      = 0;
     115    size_t      aDotPosition        = 0;
     116
     117    /*----------------------------------------------------------------*/
     118    /*----------------------------------------------------------------
     119     * 1. get filename
     120     *----------------------------------------------------------------*/
     121    aParameterPosition = mUrl.find ('?');
     122    aSlashPosition = mUrl.rfind ('/', aParameterPosition) + 1;
     123    if (aSlashPosition == mUrl.length ())
     124        return ;
     125
     126    aFilenameOffset = (aParameterPosition != std::string::npos)
     127                    ? aParameterPosition - aSlashPosition
     128                    : std::string::npos;
     129
     130    aFilename = mUrl.substr (aSlashPosition, aFilenameOffset);
     131
     132    /*----------------------------------------------------------------
     133     * 2. get file extension
     134     *----------------------------------------------------------------*/
     135    aDotPosition = aFilename.rfind ('.');
     136    if (aDotPosition != std::string::npos)
     137        mFileExtension = aFilename.substr (aDotPosition + 1);
     138    /*----------------------------------------------------------------*/
     139}
     140
     141std::string CRXHttpRequest::GetURL              (void) const { return mUrl; }
     142std::string CRXHttpRequest::GetHost             (void) const { return mHost; }
     143int         CRXHttpRequest::GetPort             (void) const { return mPort; }
     144std::string CRXHttpRequest::GetFileExtension    (void) const { return mFileExtension; }
Note: See TracChangeset for help on using the changeset viewer.