From 833dc7f5a70d486fdbbea8ebe0859cd1a1d93a4b Mon Sep 17 00:00:00 2001 From: Seva Date: Mon, 23 Sep 2019 16:32:15 -0400 Subject: [PATCH] http: refactor constructors & init default headers --- include/opendht/http.h | 1 + src/http.cpp | 46 +++++++++++++++++++----------------------- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/include/opendht/http.h b/include/opendht/http.h index c087e9c1..6d22e246 100644 --- a/include/opendht/http.h +++ b/include/opendht/http.h @@ -274,6 +274,7 @@ private: void build(); + void init_default_headers(); /** * Initialized and wraps the http_parser callbacks with our user defined callbacks. */ diff --git a/src/http.cpp b/src/http.cpp index 2ffc60a2..37872ead 100644 --- a/src/http.cpp +++ b/src/http.cpp @@ -404,18 +404,14 @@ unsigned int Request::ids_ = 1; Request::Request(asio::io_context& ctx, const std::string& url, const Json::Value& json, OnJsonCb jsoncb, std::shared_ptr logger) - : id_(Request::ids_++), ctx_(ctx), logger_(logger) + : cbs_(std::make_unique()), id_(Request::ids_++), ctx_(ctx), + resolver_(std::make_shared(ctx, url, logger)), logger_(logger) { - cbs_ = std::make_unique(); - resolver_ = std::make_shared(ctx, url, logger_); - - set_header_field(restinio::http_field_t::host, get_url().host + ":" + get_url().service); - set_target(resolver_->get_url().target); + init_default_headers(); set_header_field(restinio::http_field_t::content_type, "application/json"); set_header_field(restinio::http_field_t::accept, "application/json"); Json::StreamWriterBuilder wbuilder; set_body(Json::writeString(wbuilder, json)); - add_on_state_change_callback([this, jsoncb](State state, const Response& response){ if (state != Request::State::DONE) return; @@ -431,45 +427,45 @@ Request::Request(asio::io_context& ctx, const std::string& url, const Json::Valu } Request::Request(asio::io_context& ctx, const std::string& url, std::shared_ptr logger) - : id_(Request::ids_++), ctx_(ctx), logger_(logger) + : cbs_(std::make_unique()), id_(Request::ids_++), ctx_(ctx), + resolver_(std::make_shared(ctx, url, logger)), logger_(logger) { - cbs_ = std::make_unique(); - resolver_ = std::make_shared(ctx, url, logger_); - - set_header_field(restinio::http_field_t::host, get_url().host + ":" + get_url().service); - set_target(resolver_->get_url().target); + init_default_headers(); } Request::Request(asio::io_context& ctx, const std::string& host, const std::string& service, const bool ssl, std::shared_ptr logger) - : id_(Request::ids_++), ctx_(ctx), logger_(logger) + : cbs_(std::make_unique()), id_(Request::ids_++), ctx_(ctx), + resolver_(std::make_shared(ctx, host, service, ssl, logger)), logger_(logger) { - cbs_ = std::make_unique(); - resolver_ = std::make_shared(ctx, host, service, ssl, logger_); - set_target(resolver_->get_url().target); + init_default_headers(); } Request::Request(asio::io_context& ctx, std::shared_ptr resolver, std::shared_ptr logger) - : id_(Request::ids_++), ctx_(ctx), logger_(logger) + : cbs_(std::make_unique()), id_(Request::ids_++), ctx_(ctx), resolver_(resolver), logger_(logger) { - cbs_ = std::make_unique(); - resolver_ = resolver; - set_target(resolver_->get_url().target); + init_default_headers(); } Request::Request(asio::io_context& ctx, std::vector&& endpoints, const bool ssl, std::shared_ptr logger) - : id_(Request::ids_++), ctx_(ctx), logger_(logger) + : cbs_(std::make_unique()), id_(Request::ids_++), ctx_(ctx), + resolver_(std::make_shared(ctx, std::move(endpoints), ssl, logger)), logger_(logger) { - cbs_ = std::make_unique(); - resolver_ = std::make_shared(ctx, std::move(endpoints), ssl, logger_); - set_target(resolver_->get_url().target); + init_default_headers(); } Request::~Request() { } +void +Request::init_default_headers() +{ + set_header_field(restinio::http_field_t::host, get_url().host + ":" + get_url().service); + set_target(resolver_->get_url().target); +} + void Request::cancel() {