http: refactor constructors & init default headers

This commit is contained in:
Seva authored and Adrien Béraud committed 2019-09-24 15:49:03 -04:00
1 parent d0510dcb72
commit 833dc7f5a7
2 files changed
+22 -25

No files matched your search

+1
View File
@@ -274,6 +274,7 @@ private:
void build();
void init_default_headers();
/**
* Initialized and wraps the http_parser callbacks with our user defined callbacks.
*/
+21 -25
View File
@@ -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<dht::Logger> logger)
: id_(Request::ids_++), ctx_(ctx), logger_(logger)
: cbs_(std::make_unique<Callbacks>()), id_(Request::ids_++), ctx_(ctx),
resolver_(std::make_shared<Resolver>(ctx, url, logger)), logger_(logger)
{
cbs_ = std::make_unique<Callbacks>();
resolver_ = std::make_shared<Resolver>(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<dht::Logger> logger)
: id_(Request::ids_++), ctx_(ctx), logger_(logger)
: cbs_(std::make_unique<Callbacks>()), id_(Request::ids_++), ctx_(ctx),
resolver_(std::make_shared<Resolver>(ctx, url, logger)), logger_(logger)
{
cbs_ = std::make_unique<Callbacks>();
resolver_ = std::make_shared<Resolver>(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<dht::Logger> logger)
: id_(Request::ids_++), ctx_(ctx), logger_(logger)
: cbs_(std::make_unique<Callbacks>()), id_(Request::ids_++), ctx_(ctx),
resolver_(std::make_shared<Resolver>(ctx, host, service, ssl, logger)), logger_(logger)
{
cbs_ = std::make_unique<Callbacks>();
resolver_ = std::make_shared<Resolver>(ctx, host, service, ssl, logger_);
set_target(resolver_->get_url().target);
init_default_headers();
}
Request::Request(asio::io_context& ctx, std::shared_ptr<Resolver> resolver, std::shared_ptr<dht::Logger> logger)
: id_(Request::ids_++), ctx_(ctx), logger_(logger)
: cbs_(std::make_unique<Callbacks>()), id_(Request::ids_++), ctx_(ctx), resolver_(resolver), logger_(logger)
{
cbs_ = std::make_unique<Callbacks>();
resolver_ = resolver;
set_target(resolver_->get_url().target);
init_default_headers();
}
Request::Request(asio::io_context& ctx, std::vector<asio::ip::tcp::endpoint>&& endpoints, const bool ssl,
std::shared_ptr<dht::Logger> logger)
: id_(Request::ids_++), ctx_(ctx), logger_(logger)
: cbs_(std::make_unique<Callbacks>()), id_(Request::ids_++), ctx_(ctx),
resolver_(std::make_shared<Resolver>(ctx, std::move(endpoints), ssl, logger)), logger_(logger)
{
cbs_ = std::make_unique<Callbacks>();
resolver_ = std::make_shared<Resolver>(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()
{