Tubio/Tubio/RestResponseTemplates.cpp

92 lines
2.3 KiB
C++

#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 : "Forbidden!");
case HTTP_STATUS_CODE::UNAUTHORIZED:
return Unauthorized((message.length() > 0) ? message : "Unauthorized");
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)
});
}