Network System 0.1.1
High-performance modular networking library for scalable client-server applications
Loading...
Searching...
No Matches
http_parser.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2024, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
5#pragma once
6
9#include <vector>
10#include <string>
11#include <string_view>
12
14{
50 {
51 public:
66 static auto parse_request(const std::vector<uint8_t>& data) -> Result<http_request>;
67
73 static auto parse_request(std::string_view data) -> Result<http_request>;
74
89 static auto parse_response(const std::vector<uint8_t>& data) -> Result<http_response>;
90
96 static auto parse_response(std::string_view data) -> Result<http_response>;
97
103 static auto serialize_request(const http_request& request) -> std::vector<uint8_t>;
104
110 static auto serialize_response(const http_response& response) -> std::vector<uint8_t>;
111
120 static auto url_encode(const std::string& value) -> std::string;
121
130 static auto url_decode(const std::string& value) -> std::string;
131
137 static auto parse_query_string(const std::string& query_string)
138 -> std::map<std::string, std::string>;
139
145 static auto build_query_string(const std::map<std::string, std::string>& params)
146 -> std::string;
147
155 static auto parse_cookies(http_request& request) -> void;
156
165 static auto parse_multipart_form_data(http_request& request) -> VoidResult;
166
167 private:
168 // Helper functions for parsing
169 static auto parse_request_line(std::string_view line) -> Result<http_request>;
170 static auto parse_status_line(std::string_view line) -> Result<http_response>;
171 static auto parse_headers(std::string_view headers_section,
172 std::map<std::string, std::string>& headers) -> bool;
173 static auto trim(std::string_view str) -> std::string_view;
174 static auto split_line(std::string_view data) -> std::pair<std::string_view, std::string_view>;
175
176 // Helper function for chunked encoding
177 static auto serialize_chunked_response(const http_response& response) -> std::vector<uint8_t>;
178 };
179
180} // namespace kcenon::network::internal
Parser and serializer for HTTP messages (requests and responses)
Definition http_parser.h:50
static auto trim(std::string_view str) -> std::string_view
static auto build_query_string(const std::map< std::string, std::string > &params) -> std::string
Build query string from key-value pairs.
static auto serialize_request(const http_request &request) -> std::vector< uint8_t >
Serialize HTTP request to raw bytes.
static auto url_encode(const std::string &value) -> std::string
URL encode a string.
static auto parse_request(const std::vector< uint8_t > &data) -> Result< http_request >
Parse HTTP request from raw bytes.
static auto parse_multipart_form_data(http_request &request) -> VoidResult
Parse multipart/form-data from request body.
static auto split_line(std::string_view data) -> std::pair< std::string_view, std::string_view >
static auto parse_cookies(http_request &request) -> void
Parse cookies from Cookie header.
static auto parse_query_string(const std::string &query_string) -> std::map< std::string, std::string >
Parse query string into key-value pairs.
static auto parse_headers(std::string_view headers_section, std::map< std::string, std::string > &headers) -> bool
static auto parse_request_line(std::string_view line) -> Result< http_request >
static auto url_decode(const std::string &value) -> std::string
URL decode a string.
static auto serialize_chunked_response(const http_response &response) -> std::vector< uint8_t >
static auto parse_response(const std::vector< uint8_t > &data) -> Result< http_response >
Parse HTTP response from raw bytes.
static auto parse_status_line(std::string_view line) -> Result< http_response >
static auto serialize_response(const http_response &response) -> std::vector< uint8_t >
Serialize HTTP response to raw bytes.
::kcenon::network::VoidResult VoidResult
Network-specific error and result type definitions.
Represents an HTTP request message.
Definition http_types.h:112
Represents an HTTP response message.
Definition http_types.h:162