-
Notifications
You must be signed in to change notification settings - Fork 0
/
http_io.hpp
82 lines (75 loc) · 2.4 KB
/
http_io.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//
// Created by patrick on 4/9/20.
//
#ifndef HTTP_IO_HPP
#define HTTP_IO_HPP
#include <iostream>
#include <string>
#include <map>
#include <iterator>
#include <vector>
#include <cctype>
#include <algorithm>
#include <regex>
#include "string_util.hpp"
using namespace std;
class http_io {
const string content_type_parser = R"END(^(.*?);\s(.*)$)END";
regex content_type_regex{content_type_parser, std::regex_constants::optimize};
public:
map<string, string> env;
map<string, string> header; // HTTP response (output) headers.
map<int, string> http_status{
{100, "Continue"},
{101, "Switching Protocols"},
{200, "OK"},
{201, "Created"},
{202, "Accepted"},
{203, "Non-Authoritative Information"},
{204, "No Content"},
{205, "Reset Content"},
{206, "Partial Content"},
{300, "Multiple Choices"},
{301, "Moved Permanently"},
{302, "Found"},
{303, "See Other"},
{304, "Not Modified"},
{305, "Use Proxy"},
{307, "Temporary Redirect"},
{400, "Bad Request"},
{401, "Unauthorized"},
{402, "Payment Required"},
{403, "Forbidden"},
{404, "Not Found"},
{405, "Method Not Allowed"},
{406, "Not Acceptable"},
{407, "Proxy Authentication Required"},
{408, "Request Time-out"},
{409, "Conflict"},
{410, "Gone"},
{411, "Length Required"},
{412, "Precondition Failed"},
{413, "Request Entity Too Large"},
{414, "Request-URI Too Large"},
{415, "Unsupported Media Type"},
{416, "Requested range not satisfiable"},
{417, "Expectation Failed"},
{500, "Internal Server Error"},
{501, "Not Implemented"},
{502, "Bad Gateway"},
{503, "Service Unavailable"},
{504, "Gateway Time-out"},
{505, "HTTP Version not supported"}
};
bool https{false};
string locale;
void get_env(char *env_p[]);
explicit http_io();
void print_env(ostream &o_stream);
void respond(ostringstream &o_stream,
int status = 200,
string mime = "text/plain",
string charset = "utf-8");
string_util su;
};
#endif //HTTP_IO_HPP