-
Notifications
You must be signed in to change notification settings - Fork 0
/
GetHttpCode.cpp
49 lines (44 loc) · 2.77 KB
/
GetHttpCode.cpp
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
#include"GetHttpCode.hpp"
#include"httplib.h"
#include<string>
#include<sstream>
#include <locale>
#include <algorithm>
#include <map>
bool iequals(const std::string& lhs, const std::string& rhs) {
auto tolower_fn = [](auto c) { return std::tolower(c, std::locale{}); };
return std::ranges::equal(lhs, rhs, {}, tolower_fn, tolower_fn);
}
std::string GetHttpCode(std::string URL,std::string Method){
std::map<int, std::string> httpStatusDescriptions = {{100, "Continue"}, {101, "Switching Protocols"}, {102, "Processing"}, {103, "Early Hints"}, {200, "OK"}, {201, "Created"}, {202, "Accepted"}, {203, "Non-Authoritative Information"}, {204, "No Content"}, {205, "Reset Content"}, {206, "Partial Content"}, {207, "Multi-Status"}, {208, "Already Reported"}, {226, "IM Used"}, {300, "Multiple Choices"}, {301, "Moved Permanently"}, {302, "Found"}, {303, "See Other"}, {304, "Not Modified"}, {305, "Use Proxy"}, {307, "Temporary Redirect"}, {308, "Permanent 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 Timeout"}, {409, "Conflict"}, {410, "Gone"}, {411, "Length Required"}, {412, "Precondition Failed"}, {413, "Payload Too Large"}, {414, "URI Too Long"}, {415, "Unsupported Media Type"}, {416, "Range Not Satisfiable"}, {417, "Expectation Failed"}, {421, "Misdirected Request"}, {422, "Unprocessable Entity"}, {423, "Locked"}, {424, "Failed Dependency"}, {425, "Too Early"}, {426, "Upgrade Required"}, {428, "Precondition Required"}, {429, "Too Many Requests"}, {431, "Request Header Fields Too Large"}, {451, "Unavailable For Legal Reasons"}, {500, "Internal Server Error"}, {501, "Not Implemented"}, {502, "Bad Gateway"}, {503, "Service Unavailable"}, {504, "Gateway Timeout"}, {505, "HTTP Version Not Supported"}, {506, "Variant Also Negotiates"}, {507, "Insufficient Storage"}, {508, "Loop Detected"}, {510, "Not Extended"}, {511, "Network Authentication Required"}};
httplib::Client client(URL);
httplib::Result res;
int httpcode;
std::stringstream ss;
if (iequals(Method,"POST"))
{
res = client.Post("/");
}else if (iequals(Method,"GET"))
{
res = client.Get("/");
}else{
return "Unsign Method";
}
if(res&&res != 0){
httpcode = res->status;
}else{
if(!res){
return "Request Failed";
}
else{
return "Unkown error";
}
}
auto it = httpStatusDescriptions.find(httpcode);
if (it != httpStatusDescriptions.end()) {
ss<<httpcode<<" "<<it->second;
} else {
ss<<httpcode<<" "<<"Unassigned";
}
return ss.str();
}