mirror of
https://github.com/Expand-sys/CCash
synced 2026-03-22 20:47:10 +11:00
🐛🎨 fixed filters reliance on toResponse for bank responses crashing
This commit is contained in:
parent
e02120b6f2
commit
dedff14e7e
4 changed files with 28 additions and 22 deletions
|
|
@ -2,6 +2,10 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <drogon/HttpTypes.h>
|
#include <drogon/HttpTypes.h>
|
||||||
|
|
||||||
|
#include <drogon/HttpResponse.h>
|
||||||
|
#include <../src/HttpResponseImpl.h>
|
||||||
|
#include <../src/HttpAppFrameworkImpl.h>
|
||||||
|
|
||||||
struct BankResponse
|
struct BankResponse
|
||||||
{
|
{
|
||||||
drogon::HttpStatusCode first = drogon::k200OK;
|
drogon::HttpStatusCode first = drogon::k200OK;
|
||||||
|
|
@ -11,3 +15,6 @@ struct BankResponse
|
||||||
BankResponse(drogon::HttpStatusCode code, std::string &&str) noexcept ;
|
BankResponse(drogon::HttpStatusCode code, std::string &&str) noexcept ;
|
||||||
BankResponse(drogon::HttpStatusCode code, const std::string &str) noexcept ;
|
BankResponse(drogon::HttpStatusCode code, const std::string &str) noexcept ;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
drogon::HttpResponsePtr drogon::toResponse(BankResponse &&data);
|
||||||
|
|
@ -17,25 +17,6 @@
|
||||||
|
|
||||||
#define NAME_PARAM req->getBody().data()
|
#define NAME_PARAM req->getBody().data()
|
||||||
|
|
||||||
#include <drogon/HttpResponse.h>
|
|
||||||
#include <../src/HttpResponseImpl.h>
|
|
||||||
#include <../src/HttpAppFrameworkImpl.h>
|
|
||||||
template <>
|
|
||||||
HttpResponsePtr drogon::toResponse(BankResponse &&data)
|
|
||||||
{
|
|
||||||
auto res = std::make_shared<HttpResponseImpl>(data.first, CT_APPLICATION_JSON);
|
|
||||||
res->setBody(std::move(data.second));
|
|
||||||
auto &advices = HttpAppFrameworkImpl::instance().getResponseCreationAdvices();
|
|
||||||
if (!advices.empty())
|
|
||||||
{
|
|
||||||
for (auto &advice : advices)
|
|
||||||
{
|
|
||||||
advice(res);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
api::api(Bank &b) noexcept : bank(b)
|
api::api(Bank &b) noexcept : bank(b)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,3 +3,19 @@
|
||||||
BankResponse::BankResponse() noexcept = default;
|
BankResponse::BankResponse() noexcept = default;
|
||||||
BankResponse::BankResponse(drogon::HttpStatusCode code, std::string &&str) noexcept : first(code), second(str) {}
|
BankResponse::BankResponse(drogon::HttpStatusCode code, std::string &&str) noexcept : first(code), second(str) {}
|
||||||
BankResponse::BankResponse(drogon::HttpStatusCode code, const std::string &str) noexcept : first(code), second(str) {}
|
BankResponse::BankResponse(drogon::HttpStatusCode code, const std::string &str) noexcept : first(code), second(str) {}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
drogon::HttpResponsePtr drogon::toResponse(BankResponse &&data)
|
||||||
|
{
|
||||||
|
auto res = std::make_shared<HttpResponseImpl>(data.first, CT_APPLICATION_JSON);
|
||||||
|
res->setBody(std::move(data.second));
|
||||||
|
auto &advices = HttpAppFrameworkImpl::instance().getResponseCreationAdvices();
|
||||||
|
if (!advices.empty())
|
||||||
|
{
|
||||||
|
for (auto &advice : advices)
|
||||||
|
{
|
||||||
|
advice(res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
@ -19,6 +19,8 @@ void JsonFilter<check_content_type>::doFilter(const HttpRequestPtr &req,
|
||||||
fccb();
|
fccb();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
const auto &resp = HttpResponse::newCustomHttpResponse(BankResponse(k406NotAcceptable, "Client must Accept and have content-type of JSON"));
|
||||||
|
fcb(resp);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -27,9 +29,9 @@ void JsonFilter<check_content_type>::doFilter(const HttpRequestPtr &req,
|
||||||
fccb();
|
fccb();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
const auto &resp = HttpResponse::newCustomHttpResponse(BankResponse(k406NotAcceptable, "Client must Accept JSON"));
|
||||||
|
fcb(resp);
|
||||||
}
|
}
|
||||||
const auto &resp = HttpResponse::newCustomHttpResponse(BankResponse(k406NotAcceptable, "Client must Accept JSON"));
|
|
||||||
fcb(resp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template class JsonFilter<true>;
|
template class JsonFilter<true>;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue