mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-07-10 00:51:35 +00:00
[Master] Move response stuff to ResponseUtils.hpp
This commit is contained in:
parent
fc8232f943
commit
0e2817da88
2 changed files with 31 additions and 17 deletions
|
@ -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*/) {
|
||||||
|
|
25
apps/master/RestUtils.hpp
Normal file
25
apps/master/RestUtils.hpp
Normal file
|
@ -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…
Reference in a new issue