forked from haiwan/sledge
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.2 KiB
97 lines
3.2 KiB
#ifndef SRFT_HTTP_API_H
|
|
#define SRFT_HTTP_API_H
|
|
|
|
#include <http.h>
|
|
|
|
/***************************************************
|
|
* General HTTP Request Functions *
|
|
**************************************************/
|
|
int sandbox__get_http_request_body(struct sandbox *sandbox, char **body);
|
|
|
|
/**
|
|
* Gets the HTTP Request body from the current sandbox
|
|
* @param body pointer that we'll assign to the http_request body
|
|
* @returns the length of the http_request's body
|
|
**/
|
|
static inline int
|
|
current_sandbox__get_http_request_body(char **body)
|
|
{
|
|
return sandbox__get_http_request_body(current_sandbox__get(), body);
|
|
}
|
|
|
|
/***************************************************
|
|
* General HTTP Response Functions *
|
|
**************************************************/
|
|
int sandbox__set_http_response_header(struct sandbox *sandbox, char *h, int length);
|
|
int sandbox__set_http_response_body(struct sandbox *sandbox, char *body, int length);
|
|
int sandbox__set_http_response_status(struct sandbox *sandbox, char *status, int length);
|
|
int sandbox__vectorize_http_response(struct sandbox *sandbox);
|
|
|
|
/**
|
|
* Set an HTTP Response Header on the current sandbox
|
|
* @param header string of the header that we want to set
|
|
* @param length the length of the header string
|
|
* @returns 0 (abends program in case of error)
|
|
**/
|
|
static inline int
|
|
current_sandbox__set_http_response_header(char *header, int length)
|
|
{
|
|
return sandbox__set_http_response_header(current_sandbox__get(), header, length);
|
|
}
|
|
|
|
/**
|
|
* Set an HTTP Response Body on the current sandbox
|
|
* @param body string of the body that we want to set
|
|
* @param length the length of the body string
|
|
* @returns 0 (abends program in case of error)
|
|
**/
|
|
static inline int
|
|
current_sandbox__set_http_response_body(char *body, int length)
|
|
{
|
|
return sandbox__set_http_response_body(current_sandbox__get(), body, length);
|
|
}
|
|
|
|
/**
|
|
* Set an HTTP Response Status on the current sandbox
|
|
* @param status string of the status we want to set
|
|
* @param length the length of the status
|
|
* @returns 0 (abends program in case of error)
|
|
**/
|
|
static inline int
|
|
current_sandbox__set_http_response_status(char *status, int length)
|
|
{
|
|
return sandbox__set_http_response_status(current_sandbox__get(), status, length);
|
|
}
|
|
|
|
/**
|
|
* Encode the current sandbox's HTTP Response as an array of buffers
|
|
* @returns the number of buffers used to store the HTTP Response
|
|
**/
|
|
static inline int
|
|
current_sandbox__vectorize_http_response(void)
|
|
{
|
|
return sandbox__vectorize_http_response(current_sandbox__get());
|
|
}
|
|
|
|
/***********************************************************************
|
|
* http-parser Setup and Excute *
|
|
**********************************************************************/
|
|
// void global__http_parser_settings__initialize_and_register_callbacks(void);
|
|
|
|
extern http_parser_settings global__http_parser_settings;
|
|
|
|
int sandbox__parse_http_request(struct sandbox *sandbox, size_t l);
|
|
|
|
/**
|
|
* Parse the current sandbox's request_response_data up to length
|
|
* @param length
|
|
* @returns 0
|
|
**/
|
|
static inline int
|
|
current_sandbox__parse_http_request(size_t length)
|
|
{
|
|
return sandbox__parse_http_request(current_sandbox__get(), length);
|
|
}
|
|
|
|
#endif /* SRFT_HTTP_API_H */
|