cel_http.h

Go to the documentation of this file.
00001 //----------------------------------------------------------------------------
00004 //
00005 // (C) 2003-2006 Celartem Technology Inc. All rights reserved.
00006 //----------------------------------------------------------------------------
00007 
00008 #ifndef _cel_http_h_
00009 #define _cel_http_h_
00010 
00011 #include "cel_referable.h"
00012 #include "cel_iostream.h"
00013 #include "cel_storage.h"
00014 #include "cel_string.h"
00015 #include "cel_credprovider.h"
00016 #include "cel_storagecache.h"
00017 
00018 namespace Celartem
00019 {
00020     class HttpConnection;
00021     class HttpRequestStream;
00022     class HttpResponseStream;
00023 
00024     //------------------------------------------------------------------------
00031     struct HttpHeaderEntry
00032     {
00033         String name;  
00034         String value; 
00035     };
00036 
00037     //------------------------------------------------------------------------
00043     typedef AdvCachedStorage HttpStorage;
00044 
00045 
00046     //------------------------------------------------------------------------
00050     enum ProxyType
00051     {
00052         proxyAuto = 0, 
00053         proxyManual = 1, 
00054         proxyDirect = 2  
00055     };
00056 
00057     //------------------------------------------------------------------------
00101     class HttpManager : public Referable
00102     {
00103     public:
00122         virtual AutoPtr<HttpConnection> createConnection(
00123             const String& inHostName,
00124             u16 inPort = 80) = 0;
00125 
00150         virtual AutoPtr<HttpConnection> createSecureConnection(
00151             const String& inHostName,
00152             u16 inPort = 443,
00153             bool inVerifyServer = false) = 0;
00154 
00196         virtual AutoPtr<HttpStorage> createHttpStorage(
00197             const String& inUrl,
00198             bool inVerifyServer = false,
00199             DuplicateStreamCallback inLoadCallback = NULL,
00200             void* inContext = NULL);
00201 
00213         virtual void setProxy(
00214             ProxyType inType,
00215             const String& inHostName = "",
00216             u16 inPort = 0) = 0;
00217 
00223         virtual CredentialProvider* getCredentialProvider() = 0;
00224 
00241         static AutoPtr<HttpManager> create(
00242             const String& inUserAgentName = NullString,
00243             CredentialProvider *inCredentialProvider = NULL);
00244         
00250         static String getDefaultUserAgentName();
00251         
00258         static String getUserAgentPlatformSpec();
00259     };
00260 
00261     //------------------------------------------------------------------------
00269     class HttpConnection : public Referable
00270     {
00271     public:
00301         virtual AutoPtr<HttpRequestStream> createRequestStream(
00302             const String& inMethod,
00303             const String& inRequest,
00304             bool inReqIsEscaped = false,
00305             CredentialProvider* inCredProv = NULL) = 0;
00306 
00314         virtual AutoPtr<HttpManager> getHttpManager() = 0;
00315 
00321         virtual String getHostName() const = 0;
00322 
00328         virtual u16 getPort() const = 0;
00329 
00336         virtual bool isOnSSL() const = 0;
00337     };
00338 
00339     //------------------------------------------------------------------------
00351     //------------------------------------------------------------------------
00352     class HttpRequestStream : public Stream
00353     {
00354     public:
00360         virtual void addRequestHeader(
00361             const String& inHeader) = 0;
00362 
00379         virtual AutoPtr<HttpResponseStream> post(
00380             const void *inAdditionalData = NULL, size_t inSize = 0) = 0;
00381 
00387         virtual String getHostName() const = 0;
00388 
00394         virtual u16 getPort() const = 0;
00395 
00402         virtual bool isOnSSL() const = 0;
00403 
00410         virtual String getUrl() const = 0;
00411     };
00412 
00413     //------------------------------------------------------------------------
00420     class HttpResponseStream : public Stream
00421     {
00422     public:
00429         virtual unsigned int getStatusCode() const = 0;
00430 
00436         virtual size_t getHeaderCount() const = 0;
00437 
00445         virtual void getNthHeader(
00446             HttpHeaderEntry& outHeader, size_t inIndex) const = 0;
00447 
00455         virtual String getHeader(const String& inHeaderName) const = 0;
00456 
00463         virtual uint64_t getContentLength() const = 0;
00464     };
00465 
00466 } // namespace Celartem
00467 
00468 #endif // _cel_http_h_

This document is automatically generated using doxygen 1.5.4 at Fri Jun 27 18:21:54 2008.