From 70c92d6cea9145884d15fbd397642bf09ef5f48c Mon Sep 17 00:00:00 2001
From: Seva <seva@binarytrails.net>
Date: Thu, 29 Aug 2019 19:19:09 -0400
Subject: [PATCH] http: replace service by url

---
 include/opendht/http.h   |  7 +++----
 src/dht_proxy_server.cpp |  4 ++--
 src/http.cpp             | 24 +++++++++---------------
 3 files changed, 14 insertions(+), 21 deletions(-)

diff --git a/include/opendht/http.h b/include/opendht/http.h
index 6eab52c8..bf756dad 100644
--- a/include/opendht/http.h
+++ b/include/opendht/http.h
@@ -142,7 +142,7 @@ public:
 
     Resolver(asio::io_context& ctx, const std::string& url, std::shared_ptr<dht::Logger> logger = {});
     Resolver(asio::io_context& ctx, const std::string& host, const std::string& service = "80",
-             std::shared_ptr<dht::Logger> logger = {});
+             const bool ssl = false, std::shared_ptr<dht::Logger> logger = {});
 
     // use already resolved endpoints with classes using this resolver
     Resolver(asio::io_context& ctx, std::vector<asio::ip::tcp::endpoint> endpoints,
@@ -160,11 +160,10 @@ private:
 
     std::mutex mutex_;
 
+    Url url_;
     asio::error_code ec_;
-    std::string service_;
     asio::ip::tcp::resolver resolver_;
     std::vector<asio::ip::tcp::endpoint> endpoints_;
-    Url url_;
 
     bool completed_ {false};
     std::queue<ResolverCb> cbs_;
@@ -196,7 +195,7 @@ public:
     // resolves implicitly
     Request(asio::io_context& ctx, const std::string& url, std::shared_ptr<dht::Logger> logger = {});
     Request(asio::io_context& ctx, const std::string& host, const std::string& service = "80",
-            std::shared_ptr<dht::Logger> logger = {});
+            const bool ssl = false, std::shared_ptr<dht::Logger> logger = {});
 
     // user defined resolver
     Request(asio::io_context& ctx, std::shared_ptr<Resolver> resolver, std::shared_ptr<dht::Logger> logger = {});
diff --git a/src/dht_proxy_server.cpp b/src/dht_proxy_server.cpp
index 1f935716..a97ca78b 100644
--- a/src/dht_proxy_server.cpp
+++ b/src/dht_proxy_server.cpp
@@ -860,8 +860,8 @@ DhtProxyServer::sendPushNotification(const std::string& token, Json::Value&& jso
     if (pushServer_.empty())
         return;
 
-    auto request = std::make_shared<http::Request>(io_context(), pushHostPort_.first,
-                                                   pushHostPort_.second, logger_);
+    auto request = std::make_shared<http::Request>(io_context(), pushHostPort_.first, pushHostPort_.second,
+                                                                 httpsServer_ ? true : false, logger_);
     auto reqid = request->id();
     try {
         request->set_target("/api/push");
diff --git a/src/http.cpp b/src/http.cpp
index 84a7f9bc..97855b05 100644
--- a/src/http.cpp
+++ b/src/http.cpp
@@ -306,26 +306,26 @@ Connection::timeout(const std::chrono::seconds timeout, HandlerCb cb)
 // Resolver
 
 Resolver::Resolver(asio::io_context& ctx, const std::string& url, std::shared_ptr<dht::Logger> logger)
-    : resolver_(ctx), url_(url), logger_(logger)
+    : url_(url), resolver_(ctx), logger_(logger)
 {
-    service_ = url_.service;
     resolve(url_.host, url_.service);
 }
 
 Resolver::Resolver(asio::io_context& ctx, const std::string& host, const std::string& service,
-                   std::shared_ptr<dht::Logger> logger)
+                   const bool ssl, std::shared_ptr<dht::Logger> logger)
     : resolver_(ctx), logger_(logger)
 {
-    service_ = service;
-    resolve(host, service);
+    url_.host = host;
+    url_.service = service;
+    url_.protocol = (ssl ? "https" : "http");
+    resolve(url_.host, url_.service);
 }
 
 Resolver::Resolver(asio::io_context& ctx, std::vector<asio::ip::tcp::endpoint> endpoints, const bool ssl,
                    std::shared_ptr<dht::Logger> logger)
     : resolver_(ctx), logger_(logger)
 {
-    if (ssl)
-        url_.protocol = "https";
+    url_.protocol = (ssl ? "https" : "http");
     endpoints_ = std::move(endpoints);
     completed_ = true;
 }
@@ -351,12 +351,6 @@ Resolver::get_url() const
     return url_;
 }
 
-std::string
-Resolver::get_service() const
-{
-    return service_;
-}
-
 void
 Resolver::add_callback(ResolverCb cb)
 {
@@ -420,11 +414,11 @@ Request::Request(asio::io_context& ctx, const std::string& url, std::shared_ptr<
 }
 
 Request::Request(asio::io_context& ctx, const std::string& host, const std::string& service,
-                 std::shared_ptr<dht::Logger> logger)
+                 const bool ssl, std::shared_ptr<dht::Logger> logger)
     : id_(Request::ids_++), ctx_(ctx), logger_(logger)
 {
     cbs_ = std::make_unique<Callbacks>();
-    resolver_ = std::make_shared<Resolver>(ctx, host, service, logger_);
+    resolver_ = std::make_shared<Resolver>(ctx, host, service, ssl, logger_);
     set_target(resolver_->get_url().target);
 }
 
-- 
GitLab