-rw-r--r-- | include/kingate/cgi_gateway.h | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/include/kingate/cgi_gateway.h b/include/kingate/cgi_gateway.h index f20d72b..a26b0ae 100644 --- a/include/kingate/cgi_gateway.h +++ b/include/kingate/cgi_gateway.h @@ -45,2 +45,33 @@ namespace kingate { /** + * Abstract base class for retrieving posted files. + */ + class basic_file_t { + public: + /** + * Retrieve file name. + * @return filename + */ + virtual const string& filename() const = 0; + /** + * Retrieve file content type. + * @return content type + */ + virtual const string& content_type() const = 0; + /** + * Retrieve file contents. + * @return reference to the stream for accessing file content. + */ + virtual istream& content() = 0; + virtual ~basic_file_t(); + }; + typedef basic_file_t *file_t; + /** + * The map holding information pertaining to files uploaded via post. + */ + typedef multimap<string,file_t> files_t; + /** + * Files uploaded via post + */ + files_t files; + /** * Cookies passed. @@ -56,3 +87,9 @@ namespace kingate { */ - cgi_gateway(cgi_interface& ci); + cgi_gateway(cgi_interface& ci,bool parsebody = true); + virtual ~cgi_gateway() throw(); + + /** + * Parse request body. + */ + void parse_request_body(); @@ -138,3 +175,3 @@ namespace kingate { * @param n the parameter name. - * @return true if yes. + * @return the parameter contents. * @see exception_notfound. @@ -142,2 +179,16 @@ namespace kingate { const string& get_param(const string& n) const; + /** + * Check to see whether the file was uploaded in the request body. + * @param n the parameter name. + * @return true if yes. + */ + bool has_file(const string& n) const; + /** + * Retrieve the file uploaded in the request body. + * @param n the parameter name. + * @return the file. + * @see exception_notfound. + */ + const file_t get_file(const string& n) const; + file_t get_file(const string& n); @@ -179,3 +230,3 @@ namespace kingate { */ - unsigned long cgi_gateway::content_length() const; + unsigned long content_length() const; /** |