inet/zz_http_request.h

Go to the documentation of this file.
00001 /* libzzinet
00002  *
00003  * This program is distributed under the GNU General Public License, version 2.
00004  * A copy of this license is included with this source.
00005  *
00006  * Copyright 2000-2006, Toni Thomsson <toni@tonjac.org> 
00007 */
00008 
00009 #ifndef zz_http_request_h
00010 #define zz_http_request_h
00011 
00012 #include <zz_socket.h>
00013 #include <zz_buffer.h>
00014 #include <zz_string.h>
00015 #include <zz_mime_body.h>
00016 #include <map>
00017 #include <zz_export.h>
00018 
00019 // Kodningstyper
00020 typedef enum
00021 {
00022     ZZ_HTTP_ENCODE_TYPE_URLENCODED,
00023     ZZ_HTTP_ENCODE_TYPE_MULTIPART,
00024     ZZ_HTTP_ENCODE_TYPE_INVALID
00025 
00026 } ZZ_HTTP_ENCODE_TYPE;
00027 
00028 static char* zz_http_encode_type[] =
00029 {
00030     "application/x-www-form-urlencoded",
00031     "multipart/form-data",
00032     "<not supported>"
00033 };
00034 
00035 // HTTP kommandon
00036 typedef enum
00037 {
00038     ZZ_HTTP_CMD_GET,
00039     ZZ_HTTP_CMD_POST,
00040     ZZ_HTTP_CMD_HEAD,
00041     ZZ_HTTP_CMD_INVALID
00042 
00043 } ZZ_HTTP_CMD;
00044 
00045 static char* zz_http_command[] =
00046 {
00047     "GET",
00048     "POST",
00049     "HEAD",
00050     "<not supported>"
00051 };
00052 
00053 typedef map<CzzString, CzzString > CzzHTTPHeaders;
00054 
00055 /*
00056         Description:
00057         HTTP request
00058 
00059         Author: 
00060         Toni Thomsson, toni@tonjac.org
00061 
00062         Library:
00063         libzzinet.a (HPUX) libzzinet.lib (win32)
00064 
00065         Platform:
00066         HPUX, win32
00067 */
00068 class ZZ_API CzzHTTPRequest
00069 {
00070 public:
00071 
00072     /*
00073                 Description: Skapar ett anrops objekt
00074         */
00075     CzzHTTPRequest( CzzBuffer* buffer, CzzSocket* reqsock );
00076 
00077     // Description: Destruktor
00078     virtual ~CzzHTTPRequest();
00079 
00080     // Description: Kommando
00081     ZZ_HTTP_CMD getCommand( void );
00082 
00083     // Description: URI
00084     CzzString& getUri( void );
00085 
00086     // Description: CGI parameter
00087     CzzString getCGIParameter( const CzzString& name    // IN, namn
00088                                 );
00089 
00090     // Description: Anropande hostname
00091     CzzString& getHostName( void );
00092 
00093     // Description: Lista med headers
00094     CzzHTTPHeaders& getHeaders( void );
00095 
00096     // Description: Skriver uppladdat objekt till fil
00097     void writeToFile( const CzzString& cgi_name,    // IN, CGI parameternamn
00098                         const CzzString& local_path // IN, lokal sökväg
00099                         );
00100 
00101     ZZ_HTTP_ENCODE_TYPE getType( void );
00102     CzzString& getStringBuffer( void );
00103     CzzBuffer* getBuffer( void );
00104         CzzString getProtocol( void );
00105         CzzString getUserAgent( void );
00106         CzzString getReferer( void );
00107         CzzString getUser( void );
00108         unsigned __int64 getConnectionTime( void );
00109         CzzSocket* getSocket( void );
00110         
00111 private:
00112 
00113     void parseBuffer( void );
00114     CzzString copyReadFromStart( char* raw, long from, long to );
00115     void checkCommand( CzzString& line );
00116     int findAndParseHeaders( CzzString& type );
00117         unsigned __int64 getTime( void );
00118 
00119     CzzBuffer* m_Buffer;
00120     CzzString m_StringBuffer;
00121     CzzString m_HostName;
00122     ZZ_HTTP_CMD m_Command;
00123     ZZ_HTTP_ENCODE_TYPE m_Type;
00124     CzzMIMEBody* m_MIME;
00125     CzzString m_Uri;
00126         CzzString m_Proto;
00127     CzzHTTPHeaders m_Headers;
00128         time_t m_ConnectionTime;
00129         CzzSocket* m_RequestSocket;
00130 };
00131 
00132 #endif // zz_http_request_h
00133 
00134 
00135 

Generated on Thu Sep 21 21:45:42 2006 for tonjac.org MINI/C++ library by  doxygen 1.4.6-NO