httpmessage.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2003-2005 Tommi Maekitalo
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * As a special exception, you may use this file as part of a free
10  * software library without restriction. Specifically, if other files
11  * instantiate templates or use macros or inline functions from this
12  * file, or you compile this file and link it with other files to
13  * produce an executable, this file does not by itself cause the
14  * resulting executable to be covered by the GNU General Public
15  * License. This exception does not however invalidate any other
16  * reasons why the executable file might be covered by the GNU Library
17  * General Public License.
18  *
19  * This library is distributed in the hope that it will be useful,
20  * but WITHOUT ANY WARRANTY; without even the implied warranty of
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22  * Lesser General Public License for more details.
23  *
24  * You should have received a copy of the GNU Lesser General Public
25  * License along with this library; if not, write to the Free Software
26  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
27  */
28 
29 
30 #ifndef TNT_HTTPMESSAGE_H
31 #define TNT_HTTPMESSAGE_H
32 
33 #include <tnt/messageheader.h>
34 #include <tnt/httpheader.h>
35 #include <tnt/cookie.h>
36 #include <time.h>
37 
38 namespace tnt
39 {
42  {
43  public:
45 
46  private:
47  unsigned short majorVersion;
48  unsigned short minorVersion;
49 
50  protected:
53 
54  public:
56  : majorVersion(1),
57  minorVersion(0)
58  { }
59  virtual ~HttpMessage()
60  { }
61 
63  virtual void clear();
64 
66  bool hasHeader(const char* key) const { return header.hasHeader(key); }
67  bool hasHeader(const std::string& key) const { return header.hasHeader(key); }
70  const char* getHeader(const char* key, const char* def = "") const;
71 
73  unsigned short getMajorVersion() const
74  { return majorVersion; }
76  unsigned short getMinorVersion() const
77  { return minorVersion; }
79  void setVersion(unsigned short major, unsigned short minor)
80  { majorVersion = major; minorVersion = minor; }
81 
85  { return header.begin(); }
88  { return header.end(); }
89 
91  void setHeader(const std::string& key, const std::string& value, bool replace = true)
92  { header.setHeader(key, value, replace); }
94  void removeHeader(const std::string& key)
95  { header.removeHeader(key); }
96 
98  std::string dumpHeader() const;
100  void dumpHeader(std::ostream& out) const;
101 
103  static std::string htdate(time_t t);
105  static std::string htdate(struct ::tm* tm);
107  static std::string htdateCurrent();
108 
111  static bool checkUrl(const std::string& url);
112  };
113 }
114 
115 #endif // TNT_HTTPMESSAGE_H