Added Camellia, AES-CTR to default IKE proposal, if supported
[strongswan.git] / src / libfast / request.h
index d73477a..9ca74a9 100644 (file)
@@ -11,8 +11,6 @@
  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * for more details.
- *
- * $Id$
  */
 
 /**
@@ -34,7 +32,7 @@ typedef struct request_t request_t;
  * The response is also handled through the request object.
  */
 struct request_t {
-       
+
        /**
         * Add a cookie to the reply (Set-Cookie header).
         *
@@ -42,7 +40,7 @@ struct request_t {
         * @param value         value of the cookie
         */
        void (*add_cookie)(request_t *this, char *name, char *value);
-       
+
        /**
         * Get a cookie the client sent in the request.
         *
@@ -50,35 +48,35 @@ struct request_t {
         * @return                      cookie value, NULL if no such cookie found
         */
        char* (*get_cookie)(request_t *this, char *name);
-       
+
        /**
         * Get the request path relative to the application.
         *
         * @return                      path
         */
        char* (*get_path)(request_t *this);
-       
+
        /**
         * Get the base path of the application.
         *
         * @return                      base path
         */
        char* (*get_base)(request_t *this);
-       
+
        /**
         * Get the remote host address of this request.
         *
         * @return                      host address as string
         */
        char* (*get_host)(request_t *this);
-       
+
        /**
         * Get the user agent string.
         *
         * @return                      user agent string
         */
        char* (*get_user_agent)(request_t *this);
-               
+
        /**
         * Get a post/get variable included in the request.
         *
@@ -86,19 +84,28 @@ struct request_t {
         * @return                      value, NULL if not found
         */
        char* (*get_query_data)(request_t *this, char *name);
-       
+
+       /**
+        * Read raw POST/PUT data from HTTP request.
+        *
+        * @param buf           buffer to read data into
+        * @param len           size of the supplied buffer
+        * @return                      number of bytes read, < 0 on error
+        */
+       int (*read_data)(request_t *this, char *buf, int len);
+
        /**
         * Close the session and it's context after handling.
         */
        void (*close_session)(request_t *this);
-       
+
        /**
         * Has the session been closed by close_session()?
         *
         * @return                      TRUE if session has been closed
         */
        bool (*session_closed)(request_t *this);
-       
+
        /**
         * Redirect the client to another location.
         *
@@ -106,12 +113,19 @@ struct request_t {
         * @param ...           variable argument for fmt
         */
        void (*redirect)(request_t *this, char *fmt, ...);
-       
+
        /**
-        * Redirect the client to the referer.
+        * Get the HTTP referer.
+        *
+        * @return                      HTTP referer
+        */
+       char* (*get_referer)(request_t *this);
+
+       /**
+        * Redirect back to the referer.
         */
        void (*to_referer)(request_t *this);
-               
+
        /**
         * Set a template value.
         *
@@ -119,7 +133,7 @@ struct request_t {
         * @param value         value to set key to
         */
        void (*set)(request_t *this, char *key, char *value);
-       
+
        /**
         * Set a template value using format strings.
         *
@@ -130,7 +144,7 @@ struct request_t {
         * @param ...           variable argument list
         */
        void (*setf)(request_t *this, char *format, ...);
-       
+
        /**
         * Render a template.
         *
@@ -141,7 +155,7 @@ struct request_t {
         * @param template      clearsilver template file location
         */
        void (*render)(request_t *this, char *template);
-       
+
        /**
         * Stream a format string to the client.
         *
@@ -153,7 +167,7 @@ struct request_t {
         * @return                      number of streamed bytes, < 0 if stream closed
         */
        int (*streamf)(request_t *this, char *format, ...);
-       
+
        /**
         * Serve a request with headers and a body.
         *
@@ -161,14 +175,14 @@ struct request_t {
         * @param chunk         body to write to output
         */
        void (*serve)(request_t *this, char *headers, chunk_t chunk);
-       
+
        /**
         * Increase the reference count to the stream.
         *
         * @return                      this with increased refcount
         */
        request_t* (*get_ref)(request_t *this);
-       
+
        /**
         * Destroy the request_t.
         */
@@ -183,4 +197,4 @@ struct request_t {
  */
 request_t *request_create(int fd, bool debug);
 
-#endif /* REQUEST_H_ @} */
+#endif /** REQUEST_H_ @}*/