a bit better way to treah handlers

This commit is contained in:
Blue 2023-12-13 17:33:11 -03:00
parent f0d205dee7
commit 3fe6d25448
Signed by: blue
GPG key ID: 9B203B252A63EE38
16 changed files with 291 additions and 95 deletions

View file

@ -15,23 +15,25 @@ constexpr std::array<std::string_view, static_cast<uint8_t>(Response::ContentTyp
"Content-type: application/json"
};
Response::Response():
Response::Response(Request& request):
request(request),
status(Status::ok),
type(ContentType::text),
body()
{}
Response::Response(Status status):
Response::Response(Request& request, Status status):
request(request),
status(status),
type(ContentType::text),
body()
{}
void Response::replyTo(Request& request) const {
void Response::send() const {
// OStream out = status == Status::ok ?
// request.getOutputStream() :
// request.getErrorStream();
OStream out = request.getOutputStream();
OStream out = request.getOutputStream(this);
out << statusCodes[static_cast<uint8_t>(status)];
if (!body.empty())
@ -40,6 +42,8 @@ void Response::replyTo(Request& request) const {
<< '\n'
<< '\n'
<< body;
request.responseIsComplete(this);
}
void Response::setBody(const std::string& body) {

View file

@ -27,14 +27,15 @@ public:
json,
__size
};
Response();
Response(Status status);
Response(Request& request);
Response(Request& request, Status status);
void replyTo(Request& request) const;
void send() const;
void setBody(const std::string& body);
void setBody(const nlohmann::json& body);
private:
Request& request;
Status status;
ContentType type;
std::string body;