[Master] Move response stuff to ResponseUtils.hpp

pull/276/head
Koncord 7 years ago
parent fc8232f943
commit 0e2817da88

@ -7,22 +7,12 @@
#include <boost/property_tree/ptree.hpp> #include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp> #include <boost/property_tree/json_parser.hpp>
#include "RestUtils.hpp"
using namespace std; using namespace std;
using namespace chrono; using namespace chrono;
using namespace boost::property_tree; using namespace boost::property_tree;
static string response201 = "HTTP/1.1 201 Created\r\nContent-Length: 7\r\n\r\nCreated";
static string response202 = "HTTP/1.1 202 Accepted\r\nContent-Length: 8\r\n\r\nAccepted";
static string response400 = "HTTP/1.1 400 Bad Request\r\nContent-Length: 11\r\n\r\nbad request";
inline void ResponseStr(HttpServer::Response &response, string content, string type = "", string code = "200 OK")
{
response << "HTTP/1.1 " << code << "\r\n";
if (!type.empty())
response << "Content-Type: " << type <<"\r\n";
response << "Content-Length: " << content.length() << "\r\n\r\n" << content;
}
inline void ptreeToServer(boost::property_tree::ptree &pt, MasterServer::SServer &server) inline void ptreeToServer(boost::property_tree::ptree &pt, MasterServer::SServer &server)
{ {
server.SetName(pt.get<string>("hostname").c_str()); server.SetName(pt.get<string>("hostname").c_str());
@ -70,7 +60,7 @@ void RestServer::start()
auto port = (unsigned short)stoi(&(addr[addr.find(':')+1])); auto port = (unsigned short)stoi(&(addr[addr.find(':')+1]));
queryToStringStream(ss, "server", serverMap->at(RakNet::SystemAddress(addr.c_str(), port))); queryToStringStream(ss, "server", serverMap->at(RakNet::SystemAddress(addr.c_str(), port)));
ss << "}"; ss << "}";
ResponseStr(*response, ss.str(), "application/json"); ResponseStr<SimpleWeb::HTTP>(response, ss.str(), "application/json");
} }
catch(out_of_range e) catch(out_of_range e)
{ {
@ -93,7 +83,7 @@ void RestServer::start()
ss << ", "; ss << ", ";
} }
ss << "}}"; ss << "}}";
ResponseStr(*response, ss.str(), "application/json"); ResponseStr<SimpleWeb::HTTP>(response, ss.str(), "application/json");
updatedCache = false; updatedCache = false;
} }
*response << str; *response << str;
@ -110,7 +100,7 @@ void RestServer::start()
MasterServer::SServer server; MasterServer::SServer server;
ptreeToServer(pt, server); ptreeToServer(pt, server);
unsigned short port = pt.get<unsigned short>("port"); auto port = pt.get<unsigned short>("port");
server.lastUpdate = steady_clock::now(); server.lastUpdate = steady_clock::now();
serverMap->insert({RakNet::SystemAddress(request->remote_endpoint_address.c_str(), port), server}); serverMap->insert({RakNet::SystemAddress(request->remote_endpoint_address.c_str(), port), server});
updatedCache = true; updatedCache = true;
@ -137,7 +127,6 @@ void RestServer::start()
*response << response400; *response << response400;
return; return;
} }
if (request->content.size() != 0) if (request->content.size() != 0)
{ {
try try
@ -171,7 +160,7 @@ void RestServer::start()
ss << ", \"players\": " << players; ss << ", \"players\": " << players;
ss << "}"; ss << "}";
ResponseStr(*response, ss.str(), "application/json"); ResponseStr<SimpleWeb::HTTP>(response, ss.str(), "application/json");
}; };
httpServer.default_resource["GET"]=[](auto response, auto /*request*/) { httpServer.default_resource["GET"]=[](auto response, auto /*request*/) {

@ -0,0 +1,25 @@
//
// Created by koncord on 04.09.17.
//
#pragma once
#include <string>
#include "SimpleWeb/base_server.hpp"
static std::string response201 = "HTTP/1.1 201 Created\r\nContent-Length: 7\r\n\r\nCreated";
static std::string response202 = "HTTP/1.1 202 Accepted\r\nContent-Length: 8\r\n\r\nAccepted";
static std::string response400 = "HTTP/1.1 400 Bad Request\r\nContent-Length: 11\r\n\r\nbad request";
static std::string response403 = "HTTP/1.1 403 Forbidden\r\nContent-Length: 9\r\n\r\nForbidden";
static std::string response500 = "HTTP/1.1 500 Internal Server Error\r\nContent-Length: 21\r\n\r\nInternal Server Error";
template <class Protocol>
inline void ResponseStr(std::shared_ptr<typename SimpleWeb::ServerBase<Protocol>::Response> response,
std::string content, std::string type = "", std::string code = "200 OK")
{
*response << "HTTP/1.1 " << code << "\r\n";
if (!type.empty())
*response << "Content-Type: " << type <<"\r\n";
*response << "Content-Length: " << content.length() << "\r\n\r\n" << content;
}
Loading…
Cancel
Save