libonion
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Typedefs | Enumerations | Functions | Variables
request.h File Reference
#include <sys/types.h>
#include <sys/socket.h>
#include <stdbool.h>
#include "types.h"

Typedefs

typedef enum onion_request_flags_e onion_request_flags

Enumerations

enum  onion_request_flags_e {
  OR_METHODS = 0x0F, OR_GET = 0, OR_POST = 1, OR_HEAD = 2,
  OR_OPTIONS = 3, OR_PROPFIND = 4, OR_PUT = 5, OR_DELETE = 6,
  OR_MOVE = 7, OR_MKCOL = 8, OR_PROPPATCH = 9, OR_PATCH = 10,
  OR_HTTP11 = 0x10, OR_POST_MULTIPART = 0x20, OR_POST_URLENCODED = 0x40, OR_NO_KEEP_ALIVE = 0x0100,
  OR_HEADER_SENT_ = 0x0200, OR_INTERNAL_ERROR = 0x01000, OR_NOT_IMPLEMENTED = 0x02000, OR_NOT_FOUND = 0x03000,
  OR_FORBIDDEN = 0x04000
}
 Flags about the petition, including method, error status, http version. More...

Functions

onion_requestonion_request_new (onion_listen_point *con)
 Creates a request from a listen point. Socket info and so on must be filled by user.
onion_requestonion_request_new_from_socket (onion_listen_point *con, int fd, struct sockaddr_storage *cli_addr, socklen_t cli_len)
 Creates a request, with socket info.
void onion_request_free (onion_request *req)
 Deletes a request and all its data.
onion_connection_status onion_request_write (onion_request *req, const char *data, size_t length)
 Reads some data from the input (net, file...) and performs the onion_request_fill.
const char * onion_request_get_path (onion_request *req)
 Gets the current path.
const char * onion_request_get_fullpath (onion_request *req)
 Gets the full path of the request.
onion_request_flags onion_request_get_flags (onion_request *req)
 Gets the current flags, as in onion_request_flags_e.
void onion_request_advance_path (onion_request *req, off_t addtopos)
 Moves the path pointer to later in the fullpath.
void onion_request_session_free (onion_request *req)
 Frees the session dictionary.
void onion_request_clean (onion_request *req)
 Cleans the request object, to reuse it.
void onion_request_set_no_keep_alive (onion_request *req)
 Reqeust to close connection after one request is done, forces no keep alive.
int onion_request_keep_alive (onion_request *req)
 Returns if current request wants to keep alive.
const char * onion_request_get_language_code (onion_request *req)
 Gets the language code for the current language. C is returned if none recognized.
const onion_blockonion_request_get_data (onion_request *req)
 Returns extra request data, such as POST with non-form data, or PROPFIND. Needs the Content-Length request header.
void onion_request_polish (onion_request *req)
 Performs final touches to the request to its ready to be processed.
onion_connection_status onion_request_process (onion_request *req)
 Executes the handler required for this request.
const char * onion_request_get_client_description (onion_request *req)
 Get a string with a client description.
struct sockaddr_storage * onion_request_get_sockadd_storage (onion_request *req, socklen_t *client_len)
 Get the sockaddr_storage from the client, if any.
bool onion_request_is_secure (onion_request *req)
 Determine if the request was sent over a secure listen point.
Get header, query, post, file data and session
const char * onion_request_get_header (onion_request *req, const char *header)
 Gets a header data.
const char * onion_request_get_query (onion_request *req, const char *query)
 Gets query data.
const char * onion_request_get_queryd (onion_request *req, const char *key, const char *def)
 Gets query data, but returns a default value if key not found.
const char * onion_request_get_post (onion_request *req, const char *query)
 Gets post data.
const char * onion_request_get_file (onion_request *req, const char *query)
 Gets file data.
const char * onion_request_get_session (onion_request *req, const char *query)
 Gets session data.
const onion_dictonion_request_get_header_dict (onion_request *req)
 Gets the header header data dict.
const onion_dictonion_request_get_query_dict (onion_request *req)
 Gets request query dict.
const onion_dictonion_request_get_post_dict (onion_request *req)
 Gets post data dict.
const onion_dictonion_request_get_file_dict (onion_request *req)
 Gets post data dict.
onion_dictonion_request_get_session_dict (onion_request *req)
 Gets session data dict.
onion_dictonion_request_get_cookies_dict (onion_request *req)
 Gets the cookies dict.
const char * onion_request_get_cookie (onion_request *req, const char *cookiename)
 Gets a cookie value.

Variables

const char * onion_request_methods [16]
 List of known methods. NULL empty space, position is the method as listed at the flags.

Typedef Documentation

Function Documentation

void onion_request_advance_path ( onion_request req,
off_t  addtopos 
)

Moves the path pointer to later in the fullpath.

void onion_request_clean ( onion_request req)

Cleans the request object, to reuse it.

void onion_request_free ( onion_request req)

Deletes a request and all its data.

const char* onion_request_get_client_description ( onion_request req)

Get a string with a client description.

const char* onion_request_get_cookie ( onion_request req,
const char *  cookiename 
)

Gets a cookie value.

onion_dict* onion_request_get_cookies_dict ( onion_request req)

Gets the cookies dict.

const onion_block* onion_request_get_data ( onion_request req)

Returns extra request data, such as POST with non-form data, or PROPFIND. Needs the Content-Length request header.

const char* onion_request_get_file ( onion_request req,
const char *  query 
)

Gets file data.

const onion_dict* onion_request_get_file_dict ( onion_request req)

Gets post data dict.

onion_request_flags onion_request_get_flags ( onion_request req)

Gets the current flags, as in onion_request_flags_e.

const char* onion_request_get_fullpath ( onion_request req)

Gets the full path of the request.

const char* onion_request_get_header ( onion_request req,
const char *  header 
)

Gets a header data.

const onion_dict* onion_request_get_header_dict ( onion_request req)

Gets the header header data dict.

const char* onion_request_get_language_code ( onion_request req)

Gets the language code for the current language. C is returned if none recognized.

const char* onion_request_get_path ( onion_request req)

Gets the current path.

const char* onion_request_get_post ( onion_request req,
const char *  query 
)

Gets post data.

const onion_dict* onion_request_get_post_dict ( onion_request req)

Gets post data dict.

const char* onion_request_get_query ( onion_request req,
const char *  query 
)

Gets query data.

const onion_dict* onion_request_get_query_dict ( onion_request req)

Gets request query dict.

const char* onion_request_get_queryd ( onion_request req,
const char *  key,
const char *  def 
)

Gets query data, but returns a default value if key not found.

const char* onion_request_get_session ( onion_request req,
const char *  query 
)

Gets session data.

onion_dict* onion_request_get_session_dict ( onion_request req)

Gets session data dict.

struct sockaddr_storage* onion_request_get_sockadd_storage ( onion_request req,
socklen_t *  client_len 
)
read

Get the sockaddr_storage from the client, if any.

int onion_request_keep_alive ( onion_request req)

Returns if current request wants to keep alive.

onion_request* onion_request_new ( onion_listen_point con)

Creates a request from a listen point. Socket info and so on must be filled by user.

void onion_request_polish ( onion_request req)

Performs final touches to the request to its ready to be processed.

void onion_request_session_free ( onion_request req)

Frees the session dictionary.

void onion_request_set_no_keep_alive ( onion_request req)

Reqeust to close connection after one request is done, forces no keep alive.

onion_connection_status onion_request_write ( onion_request req,
const char *  data,
size_t  size 
)

Reads some data from the input (net, file...) and performs the onion_request_fill.

Reads some data from the input (net, file...) and performs the onion_request_fill.

It features a state machine, from req->parse_state.

Depending on the state input is redirected to a diferent parser, one for headers, POST url encoded data...

Returns
Returns the number of bytes writen, or <=0 if connection should close, according to onion_connection_status
See Also
onion_connection_status

References OCS_INTERNAL_ERROR, OCS_NEED_MORE_DATA, onion_low_calloc(), onion_request_t::parser, and onion_request_t::parser_data.

Referenced by onion_http_t::onion_http_read_ready().

Variable Documentation

const char* onion_request_methods[16]

List of known methods. NULL empty space, position is the method as listed at the flags.

See Also
onion_request_flags