Skip to content

Commit

Permalink
rev 10
Browse files Browse the repository at this point in the history
  • Loading branch information
dr3mro committed Dec 27, 2024
1 parent 6f866a6 commit d6ee40f
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 29 deletions.
22 changes: 13 additions & 9 deletions src/api/v2/helper/helper.cpp
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
#include "helper.hpp"

#include <drogon/HttpResponse.h>
#include <drogon/HttpTypes.h>
#include <json/value.h>

#include <functional>
#include <string>
#include <utility>

#include "utils/jsonhelper/jsonhelper.hpp"

using namespace api::v2;
constexpr char FAILURE[] = "Failure";
constexpr char ERROR[] = "Error";
using Helper = api::v2::Helper;

void Helper::failureResponse(const std::string& message, std::function<void(const drogon::HttpResponsePtr&)>&& callback)
{
reply(std::move(callback), drogon::k500InternalServerError, prepare(FAILURE, message));
}

void Helper::errorResponse(const drogon::HttpStatusCode& code, const std::string& message,
std::function<void(const drogon::HttpResponsePtr&)>&& callback)
void Helper::errorResponse(const drogon::HttpStatusCode& code, const std::string& message, std::function<void(const drogon::HttpResponsePtr&)>&& callback)
{
reply(std::move(callback), code, prepare(ERROR, message));
}
Expand All @@ -22,17 +27,16 @@ void Helper::successResponse(const std::string& message, std::function<void(cons
reply(std::move(callback), drogon::k200OK, message);
}

void Helper::reply(std::function<void(const drogon::HttpResponsePtr&)>&& callback, const drogon::HttpStatusCode& code,
const std::string& message)
void Helper::reply(std::function<void(const drogon::HttpResponsePtr&)>&& callback, const drogon::HttpStatusCode& code, const std::string& message)
{
auto res = drogon::HttpResponse::newHttpResponse();
res->setStatusCode(code);
res->setContentTypeCode(drogon::CT_APPLICATION_JSON);
res->setBody(message);
callback(res);
std::move(callback)(res);
}

std::string Helper::prepare(const std::string& status, const std::string& message)
std::string Helper::prepare(const std::string& status, const std::string& message) // NOLINT
{
Json::Value object = JsonHelper::jsonify(message);
object["Status"] = status;
Expand Down
46 changes: 26 additions & 20 deletions src/api/v2/helper/helper.hpp
Original file line number Diff line number Diff line change
@@ -1,30 +1,36 @@
#pragma once
#include <drogon/HttpResponse.h>
#include <drogon/HttpTypes.h>
#include <drogon/drogon.h>
#include <json/value.h>

#include <functional>
#include <jsoncons/json.hpp>
#include <string>

namespace api
namespace api::v2
{
namespace v2

class Helper
{
public:
Helper() = default;
Helper(const Helper&) = default;
Helper(Helper&&) = delete;
Helper& operator=(const Helper&) = default;
Helper& operator=(Helper&&) = delete;
virtual ~Helper() = default;

static void failureResponse(const std::string& message, std::function<void(const drogon::HttpResponsePtr&)>&& callback);
static void errorResponse(
const drogon::HttpStatusCode& code, const std::string& message, std::function<void(const drogon::HttpResponsePtr&)>&& callback);
static void successResponse(const std::string& message, std::function<void(const drogon::HttpResponsePtr&)>&& callback);

class Helper
{
public:
Helper() = default;
virtual ~Helper() = default;
static void failureResponse(const std::string& message,
std::function<void(const drogon::HttpResponsePtr&)>&& callback);
static void errorResponse(const drogon::HttpStatusCode& code, const std::string& message,
std::function<void(const drogon::HttpResponsePtr&)>&& callback);
static void successResponse(const std::string& message,
std::function<void(const drogon::HttpResponsePtr&)>&& callback);
private:
static void reply(std::function<void(const drogon::HttpResponsePtr&)>&& callback, const drogon::HttpStatusCode& code, const std::string& message);
static std::string prepare(const std::string& status, const std::string& message);

private:
static void reply(std::function<void(const drogon::HttpResponsePtr&)>&& callback,
const drogon::HttpStatusCode& code, const std::string& message);
static std::string prepare(const std::string& status, const std::string& message);
};
} // namespace v2
} // namespace api
static constexpr const char* FAILURE = "Failure";
static constexpr const char* ERROR = "Error";
};
} // namespace api::v2

0 comments on commit d6ee40f

Please sign in to comment.