From 575dd98682793e3288867e74ecf302a5ca4edfb6 Mon Sep 17 00:00:00 2001 From: lganzzzo Date: Tue, 4 Jun 2019 01:20:40 +0300 Subject: [PATCH 1/2] default iml for HttpRequestHandler --- src/CMakeLists.txt | 3 +- .../http/outgoing/ResponseFactory.cpp | 10 ++-- .../http/outgoing/ResponseFactory.hpp | 16 +++---- src/oatpp/web/server/HttpRequestHandler.hpp | 48 ++++++++++++++++++- src/oatpp/web/server/api/ApiController.cpp | 8 ++-- src/oatpp/web/server/api/ApiController.hpp | 2 +- 6 files changed, 66 insertions(+), 21 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1113a77e..22f63152 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -190,7 +190,8 @@ add_library(oatpp oatpp/web/url/mapping/Router.hpp oatpp/core/parser/ParsingError.cpp oatpp/core/parser/ParsingError.hpp - oatpp/web/server/HttpRequestHandler.hpp) + oatpp/web/server/HttpRequestHandler.hpp +) set_target_properties(oatpp PROPERTIES CXX_STANDARD 11 diff --git a/src/oatpp/web/protocol/http/outgoing/ResponseFactory.cpp b/src/oatpp/web/protocol/http/outgoing/ResponseFactory.cpp index 5ae15d8a..037cb93a 100644 --- a/src/oatpp/web/protocol/http/outgoing/ResponseFactory.cpp +++ b/src/oatpp/web/protocol/http/outgoing/ResponseFactory.cpp @@ -31,19 +31,19 @@ namespace oatpp { namespace web { namespace protocol { namespace http { namespace outgoing { std::shared_ptr -ResponseFactory::createShared(const Status& status, const oatpp::String& text) { +ResponseFactory::createResponse(const Status& status, const oatpp::String& text) { return Response::createShared(status, BufferBody::createShared(text)); } std::shared_ptr -ResponseFactory::createShared(const Status& status, const std::shared_ptr& chunkedBuffer) { +ResponseFactory::createResponse(const Status& status, const std::shared_ptr& chunkedBuffer) { return Response::createShared(status, ChunkedBufferBody::createShared(chunkedBuffer)); } std::shared_ptr -ResponseFactory::createShared(const Status& status, - const oatpp::data::mapping::type::AbstractObjectWrapper& dto, - oatpp::data::mapping::ObjectMapper* objectMapper) { +ResponseFactory::createResponse(const Status& status, + const oatpp::data::mapping::type::AbstractObjectWrapper& dto, + oatpp::data::mapping::ObjectMapper* objectMapper) { return Response::createShared(status, DtoBody::createShared(dto, objectMapper)); } diff --git a/src/oatpp/web/protocol/http/outgoing/ResponseFactory.hpp b/src/oatpp/web/protocol/http/outgoing/ResponseFactory.hpp index 72a0c58c..ec7b4d00 100644 --- a/src/oatpp/web/protocol/http/outgoing/ResponseFactory.hpp +++ b/src/oatpp/web/protocol/http/outgoing/ResponseFactory.hpp @@ -43,28 +43,28 @@ public: * Create &id:oatpp::web::protocol::http::outgoing::Response; with &id:oatpp::web::protocol::http::outgoing::BufferBody;. * @param status - &id:oatpp::web::protocol::http::Status;. * @param text - &id:oatpp::String;. - * @return - &id:oatpp::web::protocol::http::outgoing::Response;. + * @return - `std::shared_ptr` to &id:oatpp::web::protocol::http::outgoing::Response;. */ - static std::shared_ptr createShared(const Status& status, const oatpp::String& text); + static std::shared_ptr createResponse(const Status& status, const oatpp::String& text); /** * Create &id:oatpp::web::protocol::http::outgoing::Response; with &id:oatpp::web::protocol::http::outgoing::ChunkedBufferBody;. * @param status - &id:oatpp::web::protocol::http::Status;. * @param chunkedBuffer - &id:oatpp::data::stream::ChunkedBuffer;. - * @return - &id:oatpp::web::protocol::http::outgoing::Response;. + * @return - `std::shared_ptr` to &id:oatpp::web::protocol::http::outgoing::Response;. */ - static std::shared_ptr createShared(const Status& status, const std::shared_ptr& chunkedBuffer); + static std::shared_ptr createResponse(const Status& status, const std::shared_ptr& chunkedBuffer); /** * Create &id:oatpp::web::protocol::http::outgoing::Response; with &id:oatpp::web::protocol::http::outgoing::DtoBody;. * @param status - &id:oatpp::web::protocol::http::Status;. * @param dto - see [Data Transfer Object (DTO)](https://oatpp.io/docs/components/dto/). * @param objectMapper - &id:oatpp::data::mapping::ObjectMapper;. - * @return - &id:oatpp::web::protocol::http::outgoing::Response;. + * @return - `std::shared_ptr` to &id:oatpp::web::protocol::http::outgoing::Response;. */ - static std::shared_ptr createShared(const Status& status, - const oatpp::data::mapping::type::AbstractObjectWrapper& dto, - oatpp::data::mapping::ObjectMapper* objectMapper); + static std::shared_ptr createResponse(const Status& status, + const oatpp::data::mapping::type::AbstractObjectWrapper& dto, + oatpp::data::mapping::ObjectMapper* objectMapper); }; diff --git a/src/oatpp/web/server/HttpRequestHandler.hpp b/src/oatpp/web/server/HttpRequestHandler.hpp index 0e6712e2..82206a49 100644 --- a/src/oatpp/web/server/HttpRequestHandler.hpp +++ b/src/oatpp/web/server/HttpRequestHandler.hpp @@ -25,6 +25,7 @@ #ifndef oatpp_web_server_HttpRequestHandler_hpp #define oatpp_web_server_HttpRequestHandler_hpp +#include "oatpp/web/protocol/http/outgoing/ResponseFactory.hpp" #include "oatpp/web/protocol/http/outgoing/Response.hpp" #include "oatpp/web/protocol/http/incoming/Request.hpp" @@ -35,8 +36,47 @@ namespace oatpp { namespace web { namespace server { */ class HttpRequestHandler { public: + + /** + * Convenience typedef for &id:oatpp::web::protocol::http::Status;. + */ + typedef oatpp::web::protocol::http::Status Status; + + /** + * Convenience typedef for &id:oatpp::web::protocol::http::Header;. + */ + typedef oatpp::web::protocol::http::Header Header; + + /** + * Convenience typedef for &id:oatpp::web::protocol::http::Headers;. + */ + typedef oatpp::web::protocol::http::Headers Headers; + + /** + * Convenience typedef for &id:oatpp::web::protocol::http::QueryParams;. + */ + typedef oatpp::web::protocol::http::QueryParams QueryParams; + + /** + * Convenience typedef for &id:oatpp::web::protocol::http::incoming::Request;. + */ typedef oatpp::web::protocol::http::incoming::Request IncomingRequest; + + /** + * Convenience typedef for &id:oatpp::web::protocol::http::outgoing::Response;. + */ typedef oatpp::web::protocol::http::outgoing::Response OutgoingResponse; + + /** + * Convenience typedef for &id:oatpp::web::protocol::http::outgoing::ResponseFactory;. + */ + typedef oatpp::web::protocol::http::outgoing::ResponseFactory ResponseFactory; + + /** + * Convenience typedef for &id:oatpp::web::protocol::http::HttpError;. + */ + typedef oatpp::web::protocol::http::HttpError HttpError; + public: /** @@ -45,7 +85,9 @@ public: * @param request - incoming http request. &id:oatpp::web::protocol::http::incoming::Request;. * @return - outgoing http response. &id:oatpp::web::protocol::http::outgoing::Response;. */ - virtual std::shared_ptr handle(const std::shared_ptr& request) = 0; + virtual std::shared_ptr handle(const std::shared_ptr& request) { + throw HttpError(Status::CODE_501, "Endpoint not implemented."); + } /** * Handle incoming http request in Asynchronous manner.
@@ -54,7 +96,9 @@ public: * @return - &id:oatpp::async::CoroutineStarterForResult; of &id:oatpp::web::protocol::http::outgoing::Response;. */ virtual oatpp::async::CoroutineStarterForResult&> - handleAsync(const std::shared_ptr& request) = 0; + handleAsync(const std::shared_ptr& request) { + throw HttpError(Status::CODE_501, "Asynchronous endpoint not implemented."); + } }; }}} diff --git a/src/oatpp/web/server/api/ApiController.cpp b/src/oatpp/web/server/api/ApiController.cpp index 31150899..826f7d68 100644 --- a/src/oatpp/web/server/api/ApiController.cpp +++ b/src/oatpp/web/server/api/ApiController.cpp @@ -66,23 +66,23 @@ const std::shared_ptr& ApiController::getDef std::shared_ptr ApiController::createResponse(const Status& status, const oatpp::String& str) const { - return OutgoingResponseFactory::createShared(status, str); + return ResponseFactory::createResponse(status, str); } std::shared_ptr ApiController::createResponse(const Status& status, const std::shared_ptr& chunkedBuffer) const { - return OutgoingResponseFactory::createShared(status, chunkedBuffer); + return ResponseFactory::createResponse(status, chunkedBuffer); } std::shared_ptr ApiController::createDtoResponse(const Status& status, const oatpp::data::mapping::type::AbstractObjectWrapper& dto, const std::shared_ptr& objectMapper) const { - return OutgoingResponseFactory::createShared(status, dto, objectMapper.get()); + return ResponseFactory::createResponse(status, dto, objectMapper.get()); } std::shared_ptr ApiController::createDtoResponse(const Status& status, const oatpp::data::mapping::type::AbstractObjectWrapper& dto) const { - return OutgoingResponseFactory::createShared(status, dto, m_defaultObjectMapper.get()); + return ResponseFactory::createResponse(status, dto, m_defaultObjectMapper.get()); } }}}} diff --git a/src/oatpp/web/server/api/ApiController.hpp b/src/oatpp/web/server/api/ApiController.hpp index 01b9daa9..5c809489 100644 --- a/src/oatpp/web/server/api/ApiController.hpp +++ b/src/oatpp/web/server/api/ApiController.hpp @@ -56,7 +56,7 @@ public: /** * Convenience typedef for &id:oatpp::web::protocol::http::outgoing::ResponseFactory;. */ - typedef oatpp::web::protocol::http::outgoing::ResponseFactory OutgoingResponseFactory; + typedef oatpp::web::protocol::http::outgoing::ResponseFactory ResponseFactory; /** * Convenience typedef for &id:oatpp::web::protocol::http::incoming::Request;. From eae9bf08082f675b4bccb39a50d3825ef283d6d0 Mon Sep 17 00:00:00 2001 From: lganzzzo Date: Tue, 4 Jun 2019 01:23:42 +0300 Subject: [PATCH 2/2] better src/CMakeLists.txt --- src/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 22f63152..772bdc17 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -91,6 +91,8 @@ add_library(oatpp oatpp/core/macro/component.hpp oatpp/core/parser/Caret.cpp oatpp/core/parser/Caret.hpp + oatpp/core/parser/ParsingError.cpp + oatpp/core/parser/ParsingError.hpp oatpp/core/utils/ConversionUtils.cpp oatpp/core/utils/ConversionUtils.hpp oatpp/encoding/Base64.cpp @@ -175,6 +177,7 @@ add_library(oatpp oatpp/web/server/HttpConnectionHandler.hpp oatpp/web/server/HttpProcessor.cpp oatpp/web/server/HttpProcessor.hpp + oatpp/web/server/HttpRequestHandler.hpp oatpp/web/server/HttpRouter.cpp oatpp/web/server/HttpRouter.hpp oatpp/web/server/api/ApiController.cpp @@ -188,9 +191,6 @@ add_library(oatpp oatpp/web/url/mapping/Pattern.cpp oatpp/web/url/mapping/Pattern.hpp oatpp/web/url/mapping/Router.hpp - oatpp/core/parser/ParsingError.cpp - oatpp/core/parser/ParsingError.hpp - oatpp/web/server/HttpRequestHandler.hpp ) set_target_properties(oatpp PROPERTIES