00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 #ifndef _HTTPRESPONSEHEADER_H_
00023 #define _HTTPRESPONSEHEADER_H_ 1
00024 
00025 #ifdef __GNUG__
00026 #  pragma interface
00027 #endif
00028 
00036 #include <string>
00037 #include <vector>
00038 
00039 #include "cgicc/MStreamable.h"
00040 #include "cgicc/HTTPCookie.h"
00041 
00042 CGICC_BEGIN_NAMESPACE
00043 
00044 
00045 
00046 
00071 class CGICC_API HTTPResponseHeader : public MStreamable
00072 {
00073 public:
00074 
00077 
00084   HTTPResponseHeader(const STDNS string& http_version,
00085                      int status_code,
00086                      const STDNS string& reason_phrase);
00087   
00092   virtual ~HTTPResponseHeader();
00094 
00095   
00096 
00099 
00106   HTTPResponseHeader&
00107   addHeader(const STDNS string& header);
00108 
00115   HTTPResponseHeader&
00116   addHeader(const STDNS string& name,
00117             const STDNS string& value);
00118 
00124   inline const STDNS vector<STDNS string>&
00125   getHeaders()                                  const
00126   { return fHeaders; }
00128 
00131 
00136   HTTPResponseHeader&
00137   setCookie(const HTTPCookie& cookie);
00138 
00143   inline const STDNS vector<HTTPCookie>&
00144   getCookies()                                  const
00145   { return fCookies; }
00147 
00148   
00149 
00154 
00161   inline const STDNS string&
00162   getHTTPVersion()                              const
00163   { return fHTTPVersion; }
00164 
00171   inline int
00172   getStatusCode()                               const
00173   { return fStatusCode; }
00174 
00181   inline STDNS string
00182   getReasonPhrase()                             const
00183   { return fReasonPhrase; }
00185 
00186   
00187 
00192 
00200   inline HTTPResponseHeader&
00201   getHTTPVersion(const STDNS string& http_version)
00202   { fHTTPVersion = http_version; return *this; }
00203 
00211   inline HTTPResponseHeader&
00212   getStatusCode(int status_code)
00213   { fStatusCode = status_code; return *this; }
00214 
00222   inline HTTPResponseHeader&
00223   getReasonPhrase(const STDNS string& reason_phrase)
00224   { fReasonPhrase = reason_phrase; return *this; }
00226 
00227   
00228 
00231   virtual void 
00232   render(STDNS ostream& out)                    const;
00234 
00235 private:
00236   HTTPResponseHeader();
00237 
00238   STDNS string                  fHTTPVersion;
00239   int                           fStatusCode;
00240   STDNS string                  fReasonPhrase;
00241   STDNS vector<STDNS string>    fHeaders;
00242   STDNS vector<HTTPCookie>      fCookies;
00243 };
00244   
00245 CGICC_END_NAMESPACE
00246 
00247 #endif