diff --git a/core/http/request.cpp b/core/http/request.cpp index 3e16f1f..f7592ee 100644 --- a/core/http/request.cpp +++ b/core/http/request.cpp @@ -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); diff --git a/core/http/request.h b/core/http/request.h index 68712bd..c4e21a6 100644 --- a/core/http/request.h +++ b/core/http/request.h @@ -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(); diff --git a/modules/drogon/request.cpp b/modules/drogon/request.cpp index 96a7535..9510ac0 100644 --- a/modules/drogon/request.cpp +++ b/modules/drogon/request.cpp @@ -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(static_cast(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); diff --git a/modules/drogon/request.h b/modules/drogon/request.h index 1927960..88b9fc1 100644 --- a/modules/drogon/request.h +++ b/modules/drogon/request.h @@ -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();