/* libzzinet
*
* This program is distributed under the GNU General Public License, version 2.
* A copy of this license is included with this source.
*
* Copyright 2000-2006, Toni Thomsson <toni@tonjac.org>
*/
#ifdef _WIN32
#pragma warning(disable: 4786)
#endif
#ifndef zz_cgi_parameter_parser_h
#define zz_cgi_parameter_parser_h
#include <zz_string.h>
#include <map>
#include <zz_parameter_map.h>
/** Parameter lista */
typedef map<CzzString, CzzString > CzzCGIParameterMap;
/**
Parses CGI-parameters from an URL-encoded string
@author Toni Thomsson, toni@tonjac.org
*/
class ZZ_API CzzCGIParameterParser : public CzzParameterMap
{
public:
// Construction
CzzCGIParameterParser( void );
virtual ~CzzCGIParameterParser();
/**
Get variabel
@param var Name
*/
virtual CzzString operator[]( const CzzString& var );
/**
URL Encode
@param parameters Parameter URL
*/
static CzzString encode( CzzString& parameters );
/**
URL Decode
@param parameters Parameter URL
*/
static CzzString decode( CzzString& parameters );
/** Parameter map */
CzzCGIParameterMap& getParameterMap( void );
void parse( const char* vars );
protected:
CzzCGIParameterMap m_ParameterMap;
private:
static CzzString encodeChar( CzzString& parameters, char sign );
static CzzString decodeChar( CzzString& parameters, char sign );
void split( CzzString s );
char hex2Ascii( const CzzString& s );
void decodeHex( CzzString& s );
void decodeSpace( CzzString& s );
void parseVars( const CzzString& s );
};
#endif // zz_cgi_parameter_parser_h