Main Page | Namespace List | Class Hierarchy | Compound List | File List | Namespace Members | Compound Members | File Members | Related Pages

HTTPResponseHeader.h

Go to the documentation of this file.
00001 /* -*-c++-*- */
00002 /*
00003  *  $Id: HTTPResponseHeader_8h-source.html,v 1.1.1.2 2003/07/13 14:49:49 chrisb Exp $
00004  *
00005  *  Copyright (C) 1996 - 2003 Stephen F. Booth
00006  *
00007  *  This library is free software; you can redistribute it and/or
00008  *  modify it under the terms of the GNU Lesser General Public
00009  *  License as published by the Free Software Foundation; either
00010  *  version 2.1 of the License, or (at your option) any later version.
00011  *
00012  *  This library is distributed in the hope that it will be useful,
00013  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015  *  Lesser General Public License for more details.
00016  *
00017  *  You should have received a copy of the GNU Lesser General Public
00018  *  License along with this library; if not, write to the Free Software
00019  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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 namespace cgicc {
00043 
00044   // ============================================================
00045   // Class HTTPResponseHeader
00046   // ============================================================
00071   class CGICC_API HTTPResponseHeader : public MStreamable
00072   {
00073   public:
00074     
00077     
00084     HTTPResponseHeader(const std::string& http_version,
00085                        int status_code,
00086                        const std::string& reason_phrase);
00087     
00092     virtual ~HTTPResponseHeader();
00094     
00095     // ============================================================
00096     
00099     
00106     HTTPResponseHeader&
00107     addHeader(const std::string& header);
00108     
00115     HTTPResponseHeader&
00116     addHeader(const std::string& name,
00117               const std::string& value);
00118     
00124     inline const std::vector<std::string>&
00125     getHeaders()                                        const
00126     { return fHeaders; }
00128     
00131     
00136     HTTPResponseHeader&
00137     setCookie(const HTTPCookie& cookie);
00138     
00143     inline const std::vector<HTTPCookie>&
00144     getCookies()                                        const
00145     { return fCookies; }
00147     
00148     // ============================================================
00149     
00154     
00161     inline const std::string&
00162     getHTTPVersion()                            const
00163     { return fHTTPVersion; }
00164     
00171     inline int
00172     getStatusCode()                             const
00173     { return fStatusCode; }
00174     
00181     inline std::string
00182     getReasonPhrase()                           const
00183     { return fReasonPhrase; }
00185     
00186     // ============================================================
00187     
00192     
00200     inline HTTPResponseHeader&
00201     getHTTPVersion(const std::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 std::string& reason_phrase)
00224     { fReasonPhrase = reason_phrase; return *this; }
00226     
00227     // ============================================================
00228     
00231     virtual void 
00232     render(std::ostream& out)                   const;
00234     
00235   private:
00236     HTTPResponseHeader();
00237 
00238     std::string                 fHTTPVersion;
00239     int                         fStatusCode;
00240     std::string                 fReasonPhrase;
00241     std::vector<std::string>    fHeaders;
00242     std::vector<HTTPCookie>     fCookies;
00243   };
00244   
00245 } // namespace cgicc
00246 
00247 #endif /* ! _HTTPRESPONSEHEADER_H_ */

GNU cgicc - A C++ class library for writing CGI applications
Copyright © 1996 - 2003 Stephen F. Booth
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front Cover Texts, and with no Back-Cover Texts.
Documentation generated Sun Jul 13 10:49:49 2003 for cgicc by doxygen 1.3.2