-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRequestHandler.cpp
40 lines (37 loc) · 1.09 KB
/
RequestHandler.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
#include <stdexcept>
#include <Poco/Exception.h>
#include <Poco/Net/HTTPServerRequest.h>
#include <Poco/Net/HTTPServerResponse.h>
#include "RequestHandler.h"
void RequestHandler::handleRequest(Poco::Net::HTTPServerRequest &request,
Poco::Net::HTTPServerResponse &response)
{
try
{
response.setStatus(Poco::Net::HTTPResponse::HTTP_OK);
response.setContentType("application/json");
response.set("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, X-Requested-With");
response.set("Access-Control-Allow-Origin", request.get("Origin", "*"));
if (request.getContentLength() == -1) // CORS Preflight
response.send();
else
{
std::string body;
std::string line;
while (std::getline(request.stream(), line))
body += line;
FromJsonString(body);
response.send() << ProcessRequest();
}
}
catch (Poco::Exception &e)
{
Poco::Util::Application::instance().logger().error(e.displayText());
response.setStatus(Poco::Net::HTTPResponse::HTTP_BAD_REQUEST);
response.send() << "{}";
}
catch (std::exception &e)
{
response.send() << "{}";
}
}