summaryrefslogtreecommitdiffabout
path: root/include/kingate
Unidiff
Diffstat (limited to 'include/kingate') (more/less context) (ignore whitespace changes)
-rw-r--r--include/kingate/cgi_gateway.h117
-rw-r--r--include/kingate/exception.h9
-rw-r--r--include/kingate/util.h35
3 files changed, 149 insertions, 12 deletions
diff --git a/include/kingate/cgi_gateway.h b/include/kingate/cgi_gateway.h
index f683580..a5c4056 100644
--- a/include/kingate/cgi_gateway.h
+++ b/include/kingate/cgi_gateway.h
@@ -4,6 +4,14 @@
4#include <map> 4#include <map>
5#include "kingate/cgi_interface.h" 5#include "kingate/cgi_interface.h"
6 6
7#ifndef __deprecated
8#if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3
9#define __deprecated __attribute__((deprecated))
10#else
11#define __deprecated
12#endif
13#endif
14
7/** 15/**
8 * @file 16 * @file
9 * @brief the cgi_gateway -- main interface to CGI. 17 * @brief the cgi_gateway -- main interface to CGI.
@@ -59,7 +67,7 @@ namespace kingate {
59 * @see exception_notfound 67 * @see exception_notfound
60 * @see cgi_interface::get_meta() 68 * @see cgi_interface::get_meta()
61 */ 69 */
62 string get_meta(const string& n) const { return iface.get_meta(n); } 70 const string& get_meta(const string& n) const { return iface.get_meta(n); }
63 71
64 /** 72 /**
65 * fetch reference to the 'stdin' stream. 73 * fetch reference to the 'stdin' stream.
@@ -98,7 +106,7 @@ namespace kingate {
98 * @return the parameter contents. 106 * @return the parameter contents.
99 * @see exception_notfound 107 * @see exception_notfound
100 */ 108 */
101 string get_GET(const string& n) const; 109 const string& get_GET(const string& n) const;
102 /** 110 /**
103 * Check to see whether the parameter was passed via POST. 111 * Check to see whether the parameter was passed via POST.
104 * @param n the parameter name. 112 * @param n the parameter name.
@@ -111,7 +119,7 @@ namespace kingate {
111 * @return the parameter contents. 119 * @return the parameter contents.
112 * @see exception_notfound 120 * @see exception_notfound
113 */ 121 */
114 string get_POST(const string& n) const; 122 const string& get_POST(const string& n) const;
115 /** 123 /**
116 * Check to see whether the parameter was passed either via POST or 124 * Check to see whether the parameter was passed either via POST or
117 * GET. 125 * GET.
@@ -126,26 +134,123 @@ namespace kingate {
126 * @return true if yes. 134 * @return true if yes.
127 * @see exception_notfound. 135 * @see exception_notfound.
128 */ 136 */
129 string get_param(const string& n) const; 137 const string& get_param(const string& n) const;
130 138
131 /** 139 /**
132 * Retrieve the POST content-type (as passed via CONTENT_TYPE 140 * Retrieve the POST content-type (as passed via CONTENT_TYPE
133 * environment variable). 141 * environment variable).
134 * @return the content type. 142 * @return the content type.
135 */ 143 */
136 const string& get_content_type() const; 144 const string& __deprecated get_content_type() const;
137 /** 145 /**
138 * Retrieve the POST content length (as passed via the 146 * Retrieve the POST content length (as passed via the
139 * CONTENT_LENGTH environment variable). 147 * CONTENT_LENGTH environment variable).
140 * @return the content length. 148 * @return the content length.
141 */ 149 */
142 unsigned long get_content_length() const; 150 unsigned long __deprecated get_content_length() const;
143 151
144 /** 152 /**
145 * Check to see whether the content from stdin stream was parsed. 153 * Check to see whether the content from stdin stream was parsed.
146 * @return true if yes. 154 * @return true if yes.
147 */ 155 */
148 bool is_content_parsed() const { return b_parsed_content; } 156 bool is_content_parsed() const { return b_parsed_content; }
157
158 /**
159 * Retrieve the HTTP header value from the HTTP_ meta-variable.
160 * (see RFC3875)
161 * @param hn header field name.
162 * @return the HTTP header value.
163 */
164 const string& http_request_header(const string& hn) const;
165
166 /**
167 * Retrieve the AUTH_TYPE meta-variable (see RFC3875)
168 * @return authentication type.
169 */
170 const string& auth_type() const;
171 /**
172 * Retrieve the CONTENT_LENGTH meta-variable (see RFC3875)
173 * @return size of the request message body.
174 */
175 unsigned long cgi_gateway::content_length() const;
176 /**
177 * Retrieve the CONTENT_TYPE meta-variable (see RFC3875)
178 * @return media type of the request message body.
179 */
180 const string& content_type() const;
181 /**
182 * Retrieve the GATEWAY_INTERFACE meta-variable (see RFC3875)
183 * @return the gateway interface dialect.
184 */
185 const string& gateway_interface() const;
186 /**
187 * Retrieve the PATH_INFO meta-variable (see RFC3875)
188 * @return path to be interpreted by the script.
189 */
190 const string& path_info() const;
191 /**
192 * Retrieve the PATH_TRANSLATED meta-variable (see RFC3875)
193 * @return the translated path to the document.
194 */
195 const string& path_translated() const;
196 /**
197 * Retrieve the QUERY_STRING meta-variable (see RFC3875)
198 * @return the query string.
199 */
200 const string& query_string() const;
201 /**
202 * Retrieve the REMOTE_ADDR meta-variable (see RFC3875)
203 * @return the network address of the remote host.
204 */
205 const string& remote_addr() const;
206 /**
207 * Retrieve the REMOTE_HOST meta-variable (see RFC3875)
208 * @return the fully qualified domain name of the client if
209 * available. REMOTE_ADDR otherwise.
210 * @see remote_addr()
211 */
212 const string& remote_host() const;
213 /**
214 * Retrieve the REMOTE_IDENT meta-variable (see RFC3875)
215 * @return remote user identity (see RFC1413).
216 */
217 const string& remote_ident() const;
218 /**
219 * Retrieve the REMOTE_USER meta-variable (see RFC3875)
220 * @return the authenticated user name.
221 */
222 const string& remote_user() const;
223 /**
224 * Retrieve the REQUEST_METHOD meta-variable (see RFC3875)
225 * @return the http request method.
226 */
227 const string& request_method() const;
228 /**
229 * Retrieve the SCRIPT_NAME meta-variable (see RFC3875)
230 * @return the uri path identifying the script.
231 */
232 const string& script_name() const;
233 /**
234 * Retrieve the SERVER_NAME meta-variable (see RFC3875)
235 * @return the server name of the script.
236 */
237 const string& server_name() const;
238 /**
239 * Retrieve the SERVER_PORT meta-variable (see RFC3875)
240 * @return the port on which request was received.
241 */
242 unsigned int server_port() const;
243 /**
244 * Retrieve the SERVER_PROTOCOL meta-variable (see RFC3875)
245 * @return the protocol used for the request.
246 */
247 const string& server_protocol() const;
248 /**
249 * Retrieve the SERVER_SOFTWARE meta-variable (see RFC3875)
250 * @return the name and version of server software.
251 */
252 const string& server_software() const;
253
149 private: 254 private:
150 /** 255 /**
151 * Parse the query string, putting the parameters into the map 256 * Parse the query string, putting the parameters into the map
diff --git a/include/kingate/exception.h b/include/kingate/exception.h
index 6ebb361..85d89ea 100644
--- a/include/kingate/exception.h
+++ b/include/kingate/exception.h
@@ -36,6 +36,15 @@ namespace kingate {
36 exception_notfound(const string& fi,const string& fu,int l,const string& w) 36 exception_notfound(const string& fi,const string& fu,int l,const string& w)
37 : exception(fi,fu,l,w) { } 37 : exception(fi,fu,l,w) { }
38 }; 38 };
39
40 /**
41 * Thrown in case of unexpected server behaviour.
42 */
43 class server_error : public exception {
44 public:
45 server_error(const string& fi,const string& fu,int l,const string& w)
46 : exception(fi,fu,l,w) { }
47 };
39} 48}
40 49
41#endif /* __KINGATE_EXCEPTION_H */ 50#endif /* __KINGATE_EXCEPTION_H */
diff --git a/include/kingate/util.h b/include/kingate/util.h
index 4b0dca8..6024ccf 100644
--- a/include/kingate/util.h
+++ b/include/kingate/util.h
@@ -3,21 +3,44 @@
3 3
4#include <string> 4#include <string>
5 5
6#ifndef __deprecated
7#if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3
8#define __deprecated __attribute__((deprecated))
9#else
10#define __deprecated
11#endif
12#endif
13
6namespace kingate { 14namespace kingate {
7 using namespace std; 15 using namespace std;
8 16
9 /** 17 /**
10 * Escape string for passing via URL. 18 * Encode string for passing via URL.
11 * @param str string unescaped. 19 * @param str string unencoded.
12 * @return the escaped string. 20 * @return the encoded string.
13 */ 21 */
14 string url_escape(const string& str); 22 string url_encode(const string& str);
15 /** 23 /**
16 * Remove URL-encoding from the string. 24 * Remove URL-encoding from the string.
17 * @param str the URL-encoded string. 25 * @param str the URL-encoded string.
18 * @return the unescaped string. 26 * @return the decoded string.
27 */
28 string url_decode(const string& str);
29
30 /**
31 * deprecated alias to url_encode.
32 * @see url_encode
33 */
34 inline string __deprecated url_escape(const string& str) {
35 return url_encode(str);
36 }
37 /**
38 * deprecated alias to url_decode.
39 * @see url_decode
19 */ 40 */
20 string url_unescape(const string& str); 41 inline string __deprecated url_unescape(const string& str) {
42 return url_decode(str);
43 }
21} 44}
22 45
23#endif /* __KINGATE_UTIL_H */ 46#endif /* __KINGATE_UTIL_H */