-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathhttp-message-template.cpp
More file actions
75 lines (71 loc) · 2.58 KB
/
http-message-template.cpp
File metadata and controls
75 lines (71 loc) · 2.58 KB
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
#include "http-message-template.hpp"
namespace http {
namespace res_template {
namespace {
std::unordered_map<int, std::string> StatusCodeDef = {
/* 2XX Successful */
{200, "OK"},
{201, "Created"},
{202, "Accepted"},
{203, "None-Authoritative Information"},
{204, "No Content"},
{205, "Reset Content"},
/* 3XX Redirection */
{300, "Multiple Choices"},
{301, "Moved Permanently"},
{302, "Found"},
{303, "See Other"},
{304, "Modified"},
{305, "Use Proxy"}, /* 306 deprecated */
{307, "Temporary Redirect"},
/* 4XX Client Error */
{400, "Bad Request"},
{401, "Unauthorized"},
{402, "Payment Required"},
{403, "Forbidden"},
{404, "Not Found"},
{405, "Method Not Allowd"},
{406, "Not Acceptable"},
{407, "Proxy Authentication Required"},
{408, "Request Timeout"},
{409, "Conflict"},
{410, "Gone"},
{411, "Length Required"},
{412, "Precondition Failed"},
{413, "Request Entity Too Large"},
{414, "Request-URI Too Long"},
{415, "Unsupported Media Type"},
{416, "Requested Range Not Satisfiable"},
{417, "Expectation Failed"},
/* 5XX Server Error */
{500, "Internal Server Error"},
{501, "Not Implemented"},
{502, "Bad Gateway"},
{503, "Service Unavailable"},
{504, "Gateway Timeout"},
{505, "HTTP Version Not Supported"}
};
}
HttpResponse getResponse(int statusCode) {
auto iter = StatusCodeDef.find(statusCode);
if(iter == std::end(StatusCodeDef)) {
return HttpResponse();
}
std::stringstream ss;
ss << "HTTP/1.1 " << statusCode << ' ' << iter->second;
return HttpResponse(ss.str());
}
HttpResponse OK() {
return getResponse(200);
}
HttpResponse badRequest() {
return getResponse(400);
}
HttpResponse notFound() {
return getResponse(404);
}
HttpResponse notAllowed() {
return getResponse(405);
}
}
}