14 #if !defined (LIBHTTPMESSAGGE_MESSAGE_H__) 15 #define LIBHTTPMESSAGGE_MESSAGE_H__ 36 typedef struct __httpmessage_message
49 HTTPMESSAGE_PAD64(__padding, 4)
96 const
char *name, const
char *value,
114 size_t *max_headerfield_count,
115 size_t *max_line_per_value,
127 typedef struct __httpmessage_request
198 size_t max_headerfield_count,
199 size_t max_line_per_headerfield_value);
210 typedef struct __httpmessage_response
218 HTTPMESSAGE_PAD64(__padding, 4)
284 size_t max_headerfield_count,
285 size_t max_line_per_headerfield_value);
310 const
char *text,
size_t length);
335 const
char *text,
size_t length);
368 const
char *text,
size_t length,
423 const
char *text,
size_t length,
444 const
char *text,
size_t length,
482 void *output,
size_t output_size,
503 const
char *text,
size_t length,
539 void *output,
size_t output_size,
561 const
char *text,
size_t length,
597 void *output,
size_t output_size,
HMAPI void httpmessage_response_clear(httpmessage_response *response, int option_flags)
Clear response message.
HMAPI int httpmessage_request_line_consume(httpmessage_stringview *method, httpmessage_stringview *request_uri, int *major_version, int *minor_version, const char *text, size_t length, int option_flags)
Read the first line of a HTTP request message.
int minor_version
Definition: message.h:47
#define HTTPMESSAGE_C_END
End exter C block.
Definition: preprocessor.h:44
HTTP request message.
Definition: message.h:127
int status_code
Definition: message.h:216
HMAPI int httpmessage_status_line_consume(int *major_version, int *minor_version, int *status_code, httpmessage_stringview *reason_phrase, const char *text, size_t length, int option_flags)
Read HTTM message status line.
httpmessage_stringview request_uri
Definition: message.h:136
HMAPI httpmessage_request * httpmessage_request_new()
Allocate and initialize a new request.
HMAPI int httpmessage_message_content_consume(httpmessage_message *message, const char *text, size_t length, int option_flags)
Read HTTP message headers and body.
HTTP generic message.
Definition: message.h:36
HMAPI ssize_t httpmessage_response_write_file(FILE *file, const httpmessage_response *response)
Write a HTTP response to a file.
HMAPI void httpmessage_response_init(httpmessage_response *response)
Initialize a HTTP response descriptor.
HMAPI void httpmessage_request_init(httpmessage_request *request)
Initialize a HTTP request descriptor.
HTTP response message.
Definition: message.h:210
httpmessage_message message
Definition: message.h:213
HMAPI int httpmessage_message_http_version_consume(int *major_version, int *minor_version, const char *text, size_t length)
Read HTTP version token.
HMAPI void httpmessage_request_free(httpmessage_request **request)
Clear and free a request allocated with httpmessage_request_new()
HMAPI int httpmessage_response_consume(httpmessage_response *response, const char *text, size_t length, int option_flags)
Read a HTTP response message.
HTTPMESSAGE_C_BEGIN typedef httpmessage_stringview httpmessage_body
HTTP message body.
Definition: message.h:27
int major_version
Definition: message.h:45
HMAPI ssize_t httpmessage_request_write_file(FILE *file, const httpmessage_request *request)
Write a HTTP request message to a file.
HMAPI ssize_t httpmessage_message_content_write_file(FILE *file, const httpmessage_message *message)
Write message header and body to a file.
httpmessage_stringview method
Definition: message.h:133
HMAPI void httpmessage_response_free(httpmessage_response **response)
Clear and free a response allocated with httpmessage_response_new()
int type
Message type.
Definition: message.h:43
HMAPI httpmessage_response * httpmessage_response_new()
Allocate and initialize a new response.
HMAPI httpmessage_request * httpmessage_request_storage_new(size_t max_headerfield_count, size_t max_line_per_headerfield_value)
Create a request message with pre-allocated header field storage in a single memory block...
HMAPI int httpmessage_request_request_uri_consume(httpmessage_stringview *request_uri, const char *text, size_t length)
Read the Request-URI resourcce of a request line.
HMAPI void httpmessage_message_init(httpmessage_message *message)
Initialize a HTTP message descriptor.
Preprocessor macro definitions.
HMAPI httpmessage_response * httpmessage_response_storage_new(size_t max_headerfield_count, size_t max_line_per_headerfield_value)
Create a response message with pre-allocated header field storage in a single memory block...
HMAPI int httpmessage_message_get_storage_infos(size_t *max_headerfield_count, size_t *max_line_per_value, const httpmessage_message *message)
Get message storage capabilities.
HMAPI int httpmessage_request_consume(httpmessage_request *request, const char *text, size_t length, int option_flags)
Read a HTTP request message.
#define HTTPMESSAGE_C_BEGIN
Begin extern C block.
Definition: preprocessor.h:40
HMAPI ssize_t httpmessage_message_content_write_buffer(void *output, size_t output_size, const httpmessage_message *message)
Write message header and body to a buffer.
HMAPI int httpmessage_message_get_type(const char *text, size_t length, int option_flags)
Guess HTTP message type by parsing the first line of the message.
HMAPI ssize_t httpmessage_response_write_buffer(void *output, size_t output_size, const httpmessage_response *response)
Write a HTTP response to a buffer.
HMAPI void httpmessage_message_clear(httpmessage_message *message, int option_flags)
Clear message.
HMAPI void httpmessage_request_clear(httpmessage_request *request, int option_flags)
Clear request message content.
HMAPI ssize_t httpmessage_request_write_buffer(void *output, size_t output_size, const httpmessage_request *request)
Write a HTTP request message to a buffer.
Reference to a text buffer.
Definition: text.h:27
#define HMAPI
C API exposition macro.
Definition: preprocessor.h:23
HMAPI int httpmessage_message_append_header(httpmessage_message *message, const char *name, const char *value, int option_flags)
Append a header to the given message.
httpmessage_message message
Definition: message.h:130