Added basic rest framework

This commit is contained in:
Leon Etienne (ubuntu wsl)
2020-09-24 14:31:30 +02:00
parent 918b735922
commit 595e04bc32
20 changed files with 429 additions and 318 deletions

View File

@@ -0,0 +1,89 @@
#include "RestResponseTemplates.h"
using namespace JasonPP;
/*
Every query MUST have a value for "status"
Every query with status = "ERROR" MUST have a value for "description" and "message"!
*/
JsonBlock Rest::RestResponseTemplates::GetByCode(HTTP_STATUS_CODE code, std::string message)
{
switch (code)
{
case HTTP_STATUS_CODE::OK:
return OK();
case HTTP_STATUS_CODE::BAD_REQUEST:
return BadRequest(message);
case HTTP_STATUS_CODE::FORBIDDEN:
return Forbidden((message.length() > 0) ? message : "Could be disabled in the config file!");
case HTTP_STATUS_CODE::NOT_FOUND:
return NotFound((message.length() > 0) ? message : "not found");
case HTTP_STATUS_CODE::INTERNAL_SERVER_ERROR:
return InternalServerError((message.length() > 0) ? message : "Well, that's not good.");
case HTTP_STATUS_CODE::NOT_IMPLEMENTED:
return NotImplemented(message);
}
return InternalServerError("No template found for this http-status-code");
}
JsonBlock Rest::RestResponseTemplates::OK()
{
return JsonBlock({
Ele("status", "OK"),
});
}
JsonBlock Rest::RestResponseTemplates::BadRequest(std::string message)
{
return JsonBlock({
Ele("status", "ERROR"),
Ele("description", "Bad request"),
Ele("message", message)
});
}
JsonBlock Rest::RestResponseTemplates::Unauthorized(std::string message)
{
return JsonBlock({
Ele("status", "ERROR"),
Ele("description", "Unauthorized"),
Ele("message", message)
});
}
JsonBlock Rest::RestResponseTemplates::Forbidden(std::string message)
{
return JsonBlock({
Ele("status", "ERROR"),
Ele("description", "Forbidden"),
Ele("message", message)
});
}
JsonBlock Rest::RestResponseTemplates::NotFound(std::string message)
{
return JsonBlock({
Ele("status", "ERROR"),
Ele("description", "Not found"),
Ele("message", message)
});
}
JsonBlock Rest::RestResponseTemplates::InternalServerError(std::string message)
{
return JsonBlock({
Ele("status", "ERROR"),
Ele("description", "Internal server error"),
Ele("message", message)
});
}
JsonBlock Rest::RestResponseTemplates::NotImplemented(std::string message)
{
return JsonBlock({
Ele("status", "ERROR"),
Ele("description", "Not implemented"),
Ele("message", message)
});
}