summaryrefslogtreecommitdiffabout
path: root/include/kingate
Side-by-side diff
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
@@ -3,8 +3,16 @@
#include <map>
#include "kingate/cgi_interface.h"
+#ifndef __deprecated
+#if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3
+#define __deprecated __attribute__((deprecated))
+#else
+#define __deprecated
+#endif
+#endif
+
/**
* @file
* @brief the cgi_gateway -- main interface to CGI.
*/
@@ -58,9 +66,9 @@ namespace kingate {
* @return variable contents.
* @see exception_notfound
* @see cgi_interface::get_meta()
*/
- string get_meta(const string& n) const { return iface.get_meta(n); }
+ const string& get_meta(const string& n) const { return iface.get_meta(n); }
/**
* fetch reference to the 'stdin' stream.
* @return the reference to the corresponding istream object.
@@ -97,9 +105,9 @@ namespace kingate {
* @param n the parameter name.
* @return the parameter contents.
* @see exception_notfound
*/
- string get_GET(const string& n) const;
+ const string& get_GET(const string& n) const;
/**
* Check to see whether the parameter was passed via POST.
* @param n the parameter name.
* @return true if yes.
@@ -110,9 +118,9 @@ namespace kingate {
* @param n the parameter name.
* @return the parameter contents.
* @see exception_notfound
*/
- string get_POST(const string& n) const;
+ const string& get_POST(const string& n) const;
/**
* Check to see whether the parameter was passed either via POST or
* GET.
* @param n the parameter name.
@@ -125,28 +133,125 @@ namespace kingate {
* @param n the parameter name.
* @return true if yes.
* @see exception_notfound.
*/
- string get_param(const string& n) const;
+ const string& get_param(const string& n) const;
/**
* Retrieve the POST content-type (as passed via CONTENT_TYPE
* environment variable).
* @return the content type.
*/
- const string& get_content_type() const;
+ const string& __deprecated get_content_type() const;
/**
* Retrieve the POST content length (as passed via the
* CONTENT_LENGTH environment variable).
* @return the content length.
*/
- unsigned long get_content_length() const;
+ unsigned long __deprecated get_content_length() const;
/**
* Check to see whether the content from stdin stream was parsed.
* @return true if yes.
*/
bool is_content_parsed() const { return b_parsed_content; }
+
+ /**
+ * Retrieve the HTTP header value from the HTTP_ meta-variable.
+ * (see RFC3875)
+ * @param hn header field name.
+ * @return the HTTP header value.
+ */
+ const string& http_request_header(const string& hn) const;
+
+ /**
+ * Retrieve the AUTH_TYPE meta-variable (see RFC3875)
+ * @return authentication type.
+ */
+ const string& auth_type() const;
+ /**
+ * Retrieve the CONTENT_LENGTH meta-variable (see RFC3875)
+ * @return size of the request message body.
+ */
+ unsigned long cgi_gateway::content_length() const;
+ /**
+ * Retrieve the CONTENT_TYPE meta-variable (see RFC3875)
+ * @return media type of the request message body.
+ */
+ const string& content_type() const;
+ /**
+ * Retrieve the GATEWAY_INTERFACE meta-variable (see RFC3875)
+ * @return the gateway interface dialect.
+ */
+ const string& gateway_interface() const;
+ /**
+ * Retrieve the PATH_INFO meta-variable (see RFC3875)
+ * @return path to be interpreted by the script.
+ */
+ const string& path_info() const;
+ /**
+ * Retrieve the PATH_TRANSLATED meta-variable (see RFC3875)
+ * @return the translated path to the document.
+ */
+ const string& path_translated() const;
+ /**
+ * Retrieve the QUERY_STRING meta-variable (see RFC3875)
+ * @return the query string.
+ */
+ const string& query_string() const;
+ /**
+ * Retrieve the REMOTE_ADDR meta-variable (see RFC3875)
+ * @return the network address of the remote host.
+ */
+ const string& remote_addr() const;
+ /**
+ * Retrieve the REMOTE_HOST meta-variable (see RFC3875)
+ * @return the fully qualified domain name of the client if
+ * available. REMOTE_ADDR otherwise.
+ * @see remote_addr()
+ */
+ const string& remote_host() const;
+ /**
+ * Retrieve the REMOTE_IDENT meta-variable (see RFC3875)
+ * @return remote user identity (see RFC1413).
+ */
+ const string& remote_ident() const;
+ /**
+ * Retrieve the REMOTE_USER meta-variable (see RFC3875)
+ * @return the authenticated user name.
+ */
+ const string& remote_user() const;
+ /**
+ * Retrieve the REQUEST_METHOD meta-variable (see RFC3875)
+ * @return the http request method.
+ */
+ const string& request_method() const;
+ /**
+ * Retrieve the SCRIPT_NAME meta-variable (see RFC3875)
+ * @return the uri path identifying the script.
+ */
+ const string& script_name() const;
+ /**
+ * Retrieve the SERVER_NAME meta-variable (see RFC3875)
+ * @return the server name of the script.
+ */
+ const string& server_name() const;
+ /**
+ * Retrieve the SERVER_PORT meta-variable (see RFC3875)
+ * @return the port on which request was received.
+ */
+ unsigned int server_port() const;
+ /**
+ * Retrieve the SERVER_PROTOCOL meta-variable (see RFC3875)
+ * @return the protocol used for the request.
+ */
+ const string& server_protocol() const;
+ /**
+ * Retrieve the SERVER_SOFTWARE meta-variable (see RFC3875)
+ * @return the name and version of server software.
+ */
+ const string& server_software() const;
+
private:
/**
* Parse the query string, putting the parameters into the map
* specified.
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
@@ -35,8 +35,17 @@ namespace kingate {
: exception(w) { }
exception_notfound(const string& fi,const string& fu,int l,const string& w)
: exception(fi,fu,l,w) { }
};
+
+ /**
+ * Thrown in case of unexpected server behaviour.
+ */
+ class server_error : public exception {
+ public:
+ server_error(const string& fi,const string& fu,int l,const string& w)
+ : exception(fi,fu,l,w) { }
+ };
}
#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
@@ -2,23 +2,46 @@
#define __KINGATE_UTIL_H
#include <string>
+#ifndef __deprecated
+#if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3
+#define __deprecated __attribute__((deprecated))
+#else
+#define __deprecated
+#endif
+#endif
+
namespace kingate {
using namespace std;
/**
- * Escape string for passing via URL.
- * @param str string unescaped.
- * @return the escaped string.
+ * Encode string for passing via URL.
+ * @param str string unencoded.
+ * @return the encoded string.
*/
- string url_escape(const string& str);
+ string url_encode(const string& str);
/**
* Remove URL-encoding from the string.
* @param str the URL-encoded string.
- * @return the unescaped string.
+ * @return the decoded string.
+ */
+ string url_decode(const string& str);
+
+ /**
+ * deprecated alias to url_encode.
+ * @see url_encode
+ */
+ inline string __deprecated url_escape(const string& str) {
+ return url_encode(str);
+ }
+ /**
+ * deprecated alias to url_decode.
+ * @see url_decode
*/
- string url_unescape(const string& str);
+ inline string __deprecated url_unescape(const string& str) {
+ return url_decode(str);
+ }
}
#endif /* __KINGATE_UTIL_H */
/*