Implement redirects.

This commit is contained in:
Relintai 2021-10-31 02:50:06 +02:00
parent 001c3ee717
commit 8e4bb75bcb
4 changed files with 18 additions and 0 deletions

View File

@ -37,6 +37,9 @@ const std::string &Request::get_parameter(const std::string &key) const {
return str;
}
void Request::send_redirect(const std::string &location, const HTTPStatusCode status_code) {
}
void Request::compile_body() {
compiled_body.reserve(body.size() + head.size() + 15 + 13 + 14 + 15);

View File

@ -51,6 +51,7 @@ public:
virtual const std::string &get_parameter(const std::string &key) const;
virtual void send_redirect(const std::string &location, const HTTPStatusCode status_code = HTTP_STATUS_CODE_302_FOUND);
virtual void compile_body();
virtual void compile_and_send_body();
virtual void next_stage();

View File

@ -24,6 +24,19 @@ const std::string &DRequest::get_parameter(const std::string &key) const {
return request->getParameter(key);
}
void DRequest::send_redirect(const std::string &location, const HTTPStatusCode status_code) {
drogon::HttpResponsePtr response = drogon::HttpResponse::newRedirectionResponse(location, static_cast<const HttpStatusCode>(static_cast<const int>(status_code)));
_response_additional_setup(response);
response->setBody(body);
response->setExpiredTime(0);
callback(response);
pool();
}
void DRequest::send() {
//if (connection_closed) {
// DRequestPool::return_request(this);

View File

@ -28,6 +28,7 @@ public:
const std::string &get_parameter(const std::string &key) const;
void send_redirect(const std::string &location, const HTTPStatusCode status_code = HTTP_STATUS_CODE_302_FOUND);
void send();
void send_file(const std::string &p_file_path);
void reset();