http/src/include/http.h
2025-01-30 22:37:17 -05:00

84 lines
1.8 KiB
C

#include "headers.h"
#ifndef HTTP_H
#define HTTP_H
typedef enum {
GET,
HEAD,
UNKNOWN,
} http_method_t;
typedef enum {
HTTP100 = 100,
HTTP101,
HTTP200 = 200,
HTTP201, HTTP202, HTTP203,
HTTP204, HTTP205, HTTP206,
HTTP300 = 300,
HTTP301, HTTP302, HTTP303,
HTTP304, HTTP305,
HTTP307 = 307,
HTTP400 = 400,
HTTP401, HTTP402, HTTP403,
HTTP404, HTTP405, HTTP406,
HTTP407, HTTP408, HTTP409,
HTTP410, HTTP411, HTTP412,
HTTP413, HTTP414, HTTP415,
HTTP416, HTTP417,
HTTP500 = 500,
HTTP501, HTTP502, HTTP503,
HTTP504, HTTP505
} http_status_code_t;
struct http_version {
int major;
int minor;
};
typedef struct {
http_method_t method;
char* request_uri;
struct http_version version;
} http_request_line;
typedef struct {
struct http_version version;
http_status_code_t status_code;
const char* reason_phrase;
} http_status_line;
typedef struct {
http_request_line request_line;
struct general_headers general_headers;
struct request_headers request_headers;
} http_request;
typedef struct {
http_status_line status;
struct general_headers general_headers;
struct response_headers response_headers;
char* message_body;
} http_response;
http_method_t str_to_http_method(char* input);
const char* http_method_to_str(http_method_t input);
const char* http_status_code_to_str(http_status_code_t code);
void parse_request_line(char** line, http_request_line* request);
void init_general_headers(struct general_headers* headers);
void init_http_request(http_request* request);
void init_http_response(http_response* response);
void free_http_request(http_request* request);
void free_http_response(http_response* response);
void parse_http_request(char** buffer, http_request* request);
void create_http_response(http_request* request, http_response* response);
#endif