inet/zz_http.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_h
00010 #define zz_http_h
00011 
00012 #include <zz_socket.h>
00013 #include <zz_mime_body.h>
00014 #include <map>
00015 #include <zz_export.h>
00016 
00017 #ifdef _WIN32
00018         using namespace std;
00019         #pragma warning(disable: 4786)
00020 #endif
00021 
00022 // Svars headers
00023 typedef map<short, CzzString > CzzResponseHeaders;
00024 
00025 /*
00026         Description:
00027         HTTP 1.0 protokoll (user-agent)
00028 
00029         Author: 
00030         Toni Thomsson, toni@tonjac.org
00031 
00032         Library:
00033         libzzinet.a (HPUX) libzzinet.lib (win32)
00034 
00035         Platform:
00036         HPUX, win32
00037 */
00038 class ZZ_API CzzHTTP
00039 {
00040 public:
00041 
00042         /*
00043                 Description:
00044                 Skapa ett user-agent objekt (HTTP-klient)
00045 
00046                 Throws:
00047                 CzzException
00048         */
00049         CzzHTTP( const char* host,                              // IN, dator
00050                                 const char* port,                       // IN, port
00051                                 const char* user_agent,         // IN, klient namn
00052                                 unsigned short s_timeout,       // IN, send-timeout i sekunder
00053                                 unsigned short r_timeout );     // IN, recieve-timeout i sekunder
00054 
00055         // Description: Destruktor
00056         virtual ~CzzHTTP();
00057 
00058         
00059         /*
00060                 Description:
00061                 GET anrop
00062 
00063                 Throws:
00064                 CzzException
00065         */
00066         void get( const char* uri,                              // IN, sökväg (Unified resource identifier)
00067                                 const char* response_file       // IN, svarsfil
00068                                 );
00069 
00070         /* 
00071                 Description: 
00072                 POST anrop
00073 
00074                 Remarks: 
00075                 Innehållstyp: application/x-www-form-urlencoded
00076 
00077                 Throws:
00078                 CzzException
00079         */
00080         void post( const char* uri,                             // IN, sökväg (Unified resource identifier)
00081                                 const char* query,                      // IN, fråga
00082                                 const char* response_file       // IN, svarsfil
00083                                 );
00084 
00085         // Remarks: innehållstyp: multipart/form-data
00086         void post( const char* uri,                             // IN, sökväg (Unified resource identifier)
00087                                 CzzMIMEBody& body,                      // IN, MIME body
00088                                 const char* response_file       // IN, svarsfil 
00089                                 );
00090 
00091         /* 
00092                 Description: 
00093                 HEAD anrop
00094                 
00095                 Throws:
00096                 CzzException
00097         */
00098         void head( const char* uri // IN, sökväg (Unified resource identifier)
00099                                 );
00100 
00101         /* 
00102                 Description: 
00103                 PUT anrop
00104                 
00105                 Throws:
00106                 CzzException
00107         */
00108         void put( const char* uri,              // IN, sökväg (Unified resource identifier)
00109                                 const char* data,       // IN, data buffert
00110                                 unsigned long size      // IN, storlek på data
00111                                 );
00112 
00113         /* 
00114                 Description: 
00115                 DELETE anrop
00116                 
00117                 Throws:
00118                 CzzException
00119         */
00120         void del( const char* uri               // IN, sökväg (Unified resource identifier)
00121                                 );
00122         
00123         /* 
00124                 Description: 
00125                 Svars header lista
00126         */
00127         CzzResponseHeaders& getResponseHeaders( void ) { return m_ResponseHeaders; };
00128 
00129         
00130         // Description: Filstorlek (svar) i bytes
00131         unsigned long getFileSize( void ) { return m_FileSize; };
00132 
00133         // Description: Hämta svar
00134         // Returns: storlek på svar
00135         long reply( void );
00136 
00137 protected:
00138         
00139         // Description: Skicka anrop
00140         // Remarks: protected
00141         void send( void );
00142 
00143         // Description: Parsa svar
00144         // Remarks: protected
00145         void parseReply( unsigned long size // storlek
00146                                                 );
00147 
00148         // Description: Skriv svar till fil
00149         // Remarks: Överlagra om svaret inte skall skrivas till fil
00150         virtual void writeToFile( long from,    // IN, position i m_ReplyBuffer
00151                                                                 long size       // IN, antal bytes som skall skrivas
00152                                                                 );
00153 
00154         // Description: Lägg till anrop till anrops buffert
00155         // Remarks: protected
00156         void addRequest( const char* method,    // IN, anropsmetod
00157                                                 const char* uri         // IN, sökväg
00158                                                 );
00159 
00160         // Description: Lägg till header till anrops buffert
00161         // Remarks: protected
00162         void addHeader( const char* format_header,      // IN, format, se printf()
00163                                         ...                                                     // IN, parametrar
00164                                         );
00165 
00166         // Description: Lägg till objekt till anrops buffert
00167         // Remarks: protected
00168         void addEntityData( const char* data,           // IN, data buffert
00169                                                 unsigned long size              // IN, storlek på data
00170                                                 );
00171 
00172         // Description: Lägg till slutmakering till anrops buffert
00173         // Remarks: protected
00174         void addEndMarker( void );
00175 
00176 
00177         unsigned long m_FileSize;
00178         CzzBuffer* m_SendBuffer;
00179         char* m_ReplyBuffer;
00180         CzzString m_Host;
00181     CzzString m_LocalHost;
00182         CzzString m_Port;
00183         CzzString m_UserAgent;
00184         CzzString m_ResponseFile;
00185         CzzSocket* m_Socket;
00186         unsigned short m_SendTimeout;
00187         unsigned short m_RecTimeout;
00188         CzzResponseHeaders m_ResponseHeaders;
00189 
00190 private:
00191 
00192         CzzString copyReadFromStart( long from, long to );
00193 };
00194 
00195 #endif // zz_http_h
00196 

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