Logo Pico-Framework A web-first embedded framework for C++
Loading...
Searching...
No Matches
HttpParser.h
Go to the documentation of this file.
1
17#pragma once
18#include <string>
19#include <map>
20#include <functional>
21#include "network/Tcp.h"
22
24{
25public:
34 static std::pair<std::string, std::string> receiveHeaderAndLeftover(Tcp &socket);
35
39 static bool receiveBody(Tcp &socket,
40 const std::map<std::string, std::string> &headers,
41 const std::string &leftoverBody,
42 std::string &outBody,
43 size_t maxLength,
44 bool *wasTruncated);
45
46 static bool receiveChunkedBodyToFile(
47 Tcp& socket,
48 const std::string& leftover,
49 std::function<bool(const char*, size_t)> writeFn,
50 size_t maxLength,
51 bool* wasTruncated);
52
54 Tcp& socket,
55 const std::map<std::string, std::string>& headers,
56 const std::string& leftover,
57 std::function<bool(const char*, size_t)> writeFn,
58 size_t maxLength,
59 bool* wasTruncated);
60
61 static int parseStatusCode(const std::string &statusLine);
62 static std::map<std::string, std::string> parseHeaders(const std::string &rawHeaders);
63
64 static bool isChunkedEncoding(const std::map<std::string, std::string> &headers);
65 static bool receiveChunkedBodyToString(Tcp &socket, const std::string &leftover, std::string &out, size_t maxLength, bool *wasTruncated);
66 static bool receiveFixedLengthBodyToString(Tcp &socket, const std::map<std::string, std::string> &headers, const std::string &leftover, std::string &out, size_t maxLength, bool *wasTruncated);
67 static bool receiveUnknownLengthBodyToString(Tcp &socket, const std::string &leftover, std::string &out, size_t maxLength, bool *wasTruncated);
68};
General-purpose TCP socket abstraction with optional TLS support for both client and server use.
static std::pair< std::string, std::string > receiveHeaderAndLeftover(Tcp &socket)
Receive raw headers from the socket until \r \r .
static bool receiveChunkedBodyToString(Tcp &socket, const std::string &leftover, std::string &out, size_t maxLength, bool *wasTruncated)
static bool receiveFixedLengthBodyToString(Tcp &socket, const std::map< std::string, std::string > &headers, const std::string &leftover, std::string &out, size_t maxLength, bool *wasTruncated)
static bool receiveFixedLengthBodyToFile(Tcp &socket, const std::map< std::string, std::string > &headers, const std::string &leftover, std::function< bool(const char *, size_t)> writeFn, size_t maxLength, bool *wasTruncated)
static bool receiveUnknownLengthBodyToString(Tcp &socket, const std::string &leftover, std::string &out, size_t maxLength, bool *wasTruncated)
static bool isChunkedEncoding(const std::map< std::string, std::string > &headers)
static int parseStatusCode(const std::string &statusLine)
Parses the HTTP status line to extract the status code.
static bool receiveBody(Tcp &socket, const std::map< std::string, std::string > &headers, const std::string &leftoverBody, std::string &outBody, size_t maxLength, bool *wasTruncated)
Receive the HTTP body from socket, using Content-Length or connection close.
static std::map< std::string, std::string > parseHeaders(const std::string &rawHeaders)
Parses the HTTP headers from a raw header string.
static bool receiveChunkedBodyToFile(Tcp &socket, const std::string &leftover, std::function< bool(const char *, size_t)> writeFn, size_t maxLength, bool *wasTruncated)
General-purpose TCP socket wrapper with optional TLS support via mbedTLS (altcp).
Definition Tcp.h:39