Files
backend/common/Http.cc
T

43 lines
1.1 KiB
C++

#include "common/Http.h"
namespace visione::http
{
drogon::HttpResponsePtr json(Json::Value body, drogon::HttpStatusCode status)
{
auto response = drogon::HttpResponse::newHttpJsonResponse(std::move(body));
response->setStatusCode(status);
return response;
}
drogon::HttpResponsePtr error(const std::string &code,
drogon::HttpStatusCode status,
const std::string &message)
{
Json::Value body;
body["error"] = code;
if (!message.empty())
{
body["message"] = message;
}
return json(std::move(body), status);
}
drogon::HttpResponsePtr redirect(const std::string &url,
drogon::HttpStatusCode status)
{
auto response = drogon::HttpResponse::newRedirectionResponse(url);
response->setStatusCode(status);
return response;
}
Json::Value requireJson(const drogon::HttpRequestPtr &request)
{
const auto &body = request->getJsonObject();
if (!body)
{
return Json::Value(Json::nullValue);
}
return *body;
}
} // namespace visione::http