58 lines
1015 B
C
58 lines
1015 B
C
|
/*
|
||
|
* This file is a part of CMSLU -- Content Management System like Unix
|
||
|
* and is not publicly distributed
|
||
|
*
|
||
|
* Copyright (c) 2008, Tomasz Sowa
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef headerfilegetparser
|
||
|
#define headerfilegetparser
|
||
|
|
||
|
#include "httpsimpleparser.h"
|
||
|
#include "requesttypes.h"
|
||
|
|
||
|
|
||
|
class GetParser : public HttpSimpleParser
|
||
|
{
|
||
|
|
||
|
const char * get_string;
|
||
|
GetTable & get_table;
|
||
|
|
||
|
protected:
|
||
|
|
||
|
virtual int GetChar()
|
||
|
{
|
||
|
if( !get_string || *get_string == 0 )
|
||
|
return -1;
|
||
|
|
||
|
return (int)(unsigned char)*(get_string++);
|
||
|
}
|
||
|
|
||
|
|
||
|
virtual void Parameter(std::string &, std::string & value)
|
||
|
{
|
||
|
get_table.push_back(value);
|
||
|
|
||
|
log << log2 << "Get, value: \"" << value << "\"" << logend;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
public:
|
||
|
|
||
|
GetParser(const char * get_string_, GetTable & get_table_) : get_string(get_string_), get_table(get_table_)
|
||
|
{
|
||
|
HttpSimpleParser::separator = '/';
|
||
|
HttpSimpleParser::read_name = false;
|
||
|
|
||
|
if( get_string && *get_string == separator ) // one '/' at the beginning
|
||
|
++get_string;
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif
|