/
sawixy
/
Milk
Обзор
Документация
Войти
/
sawixy
/
Milk
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
include/http.h
75 строк
1 KB
sawixy
Added http parser/formatter
23 ноя 2025, 13:29
23 ноя 2025, 13:29
e32c48a
Код
Авторство
О чём код?
#ifndef HTTP_H #define HTTP_H #include <milk/collections/macro_vec.h> #define MAX_HEADERS 256 #define MAX_HEADER_LENGTH 128 typedef enum State { METHOD, URI, VERSION, STATUS, STATUS_TEXT, HEADERS, BODY, UNDEFINED, COMPLETE, ERROR_STATE } State; typedef enum ParserType { REQUEST, RESPONSE } ParserType; typedef enum ParseResult { PARSED, NOT_PARSED, INVALID_PROTOCOL, ERROR } ParseResult; typedef struct HTTPhead { char* key; char* value; } HTTPhead; DECLARE_VEC(HTTPhead); typedef struct HTTPreq { char* method; char* uri; char* version; vHTTPhead headers; char* body; } HTTPreq; typedef struct HTTPresp { int status; char* status_text; char* version; vHTTPhead headers; char* body; } HTTPresp; typedef struct HTTPparser { State state; union { HTTPreq req; HTTPresp resp; } parsed; ParserType parsertype; int pointer; char* data; } HTTPparser; HTTPparser new_HTTPparser(ParserType parser_type); void free_HTTPparser(HTTPparser* parser); ParseResult parseHTTP(HTTPparser* parser, char* data); char* format_request(HTTPreq req); char* format_response(HTTPresp resp); #endif