Accept Filter

This commit is contained in:
EntireTwix 2021-07-04 01:26:44 -07:00
parent 8b30588d8f
commit f0a296d97b
3 changed files with 32 additions and 0 deletions

View file

@ -17,6 +17,7 @@ add_executable(${PROJECT_NAME} main.cpp )
add_subdirectory(third_party/xxHash/cmake_unofficial third_party/xxHash/build EXCLUDE_FROM_ALL)
target_sources(${PROJECT_NAME} PRIVATE
src/json_filter.cpp
src/admin_filter.cpp
src/bank_api.cpp
src/bank.cpp

14
include/json_filter.h Normal file
View file

@ -0,0 +1,14 @@
#pragma once
#include <drogon/HttpFilter.h>
using namespace drogon;
class JsonFilter : public HttpFilter<JsonFilter, false>
{
public:
JsonFilter();
virtual void doFilter(const HttpRequestPtr &,
FilterCallback &&,
FilterChainCallback &&) override;
};

17
src/json_filter.cpp Normal file
View file

@ -0,0 +1,17 @@
#include "json_filter.h"
JsonFilter::JsonFilter() {}
void JsonFilter::doFilter(const HttpRequestPtr &req,
FilterCallback &&fcb,
FilterChainCallback &&fccb)
{
if (req->getHeader("Content-Type") == "application/json" && req->getHeader("Accept") == "application/json")
{
fccb();
return;
}
const auto &resp = HttpResponse::newHttpJsonResponse("Client must Accept JSON");
resp->setStatusCode(k406NotAcceptable);
fcb(resp);
}