password hash cheching

This commit is contained in:
Blue 2023-12-22 20:25:20 -03:00
parent 99a9fd507e
commit 534c282226
Signed by: blue
GPG key ID: 9B203B252A63EE38
25 changed files with 390 additions and 84 deletions

View file

@ -3,10 +3,25 @@
#include "response.h"
constexpr std::array<std::string_view, static_cast<uint8_t>(Response::Status::__size)> statusCodes = {
#include "request/request.h"
constexpr std::array<uint16_t, static_cast<uint8_t>(Response::Status::__size)> statusCodes = {
200,
400,
401,
404,
405,
409,
500
};
constexpr std::array<std::string_view, static_cast<uint8_t>(Response::Status::__size)> statuses = {
"Status: 200 OK",
"Status: 400 Bad Request",
"Status: 401 Unauthorized",
"Status: 404 Not Found",
"Status: 405 Method Not Allowed",
"Status: 409 Conflict",
"Status: 500 Internal Error"
};
@ -33,9 +48,9 @@ void Response::send() const {
// OStream out = status == Status::ok ?
// request.getOutputStream() :
// request.getErrorStream();
OStream out = request.getOutputStream(this);
OStream out = request.getOutputStream();
out << statusCodes[static_cast<uint8_t>(status)];
out << statuses[static_cast<uint8_t>(status)];
if (!body.empty())
out << '\n'
<< contentTypes[static_cast<uint8_t>(type)]
@ -43,7 +58,11 @@ void Response::send() const {
<< '\n'
<< body;
request.responseIsComplete(this);
request.responseIsComplete();
}
uint16_t Response::statusCode() const {
return statusCodes[static_cast<uint8_t>(status)];
}
void Response::setBody(const std::string& body) {

View file

@ -9,15 +9,20 @@
#include <nlohmann/json.hpp>
#include "request/request.h"
#include "stream/ostream.h"
class Request;
class Response {
friend class Request;
public:
enum class Status {
ok,
badRequest,
unauthorized,
notFound,
methodNotAllowed,
conflict,
internalError,
__size
};
@ -27,13 +32,17 @@ public:
json,
__size
};
Response(Request& request);
Response(Request& request, Status status);
uint16_t statusCode() const;
void send() const;
void setBody(const std::string& body);
void setBody(const nlohmann::json& body);
private:
Response(Request& request);
Response(Request& request, Status status);
private:
Request& request;
Status status;