diff options
Diffstat (limited to 'protocols/Telegram/tdlib/td/tdutils/td/utils/HttpUrl.h')
-rw-r--r-- | protocols/Telegram/tdlib/td/tdutils/td/utils/HttpUrl.h | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/protocols/Telegram/tdlib/td/tdutils/td/utils/HttpUrl.h b/protocols/Telegram/tdlib/td/tdutils/td/utils/HttpUrl.h index f7d1e4aaba..9b4e92edce 100644 --- a/protocols/Telegram/tdlib/td/tdutils/td/utils/HttpUrl.h +++ b/protocols/Telegram/tdlib/td/tdutils/td/utils/HttpUrl.h @@ -1,5 +1,5 @@ // -// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018 +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022 // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -11,29 +11,54 @@ #include "td/utils/Status.h" #include "td/utils/StringBuilder.h" +#include <utility> + namespace td { class HttpUrl { public: - enum class Protocol { HTTP, HTTPS } protocol_; + enum class Protocol { Http, Https } protocol_ = Protocol::Http; string userinfo_; string host_; - bool is_ipv6; - int specified_port_; - int port_; + bool is_ipv6_ = false; + int specified_port_ = 0; + int port_ = 0; string query_; string get_url() const; + + HttpUrl(Protocol protocol, string userinfo, string host, bool is_ipv6, int specified_port, int port, string query) + : protocol_(protocol) + , userinfo_(std::move(userinfo)) + , host_(std::move(host)) + , is_ipv6_(is_ipv6) + , specified_port_(specified_port) + , port_(port) + , query_(std::move(query)) { + } }; -// TODO Slice instead of MutableSlice -Result<HttpUrl> parse_url(MutableSlice url, - HttpUrl::Protocol default_protocol = HttpUrl::Protocol::HTTP) TD_WARN_UNUSED_RESULT; +Result<HttpUrl> parse_url(Slice url, + HttpUrl::Protocol default_protocol = HttpUrl::Protocol::Http) TD_WARN_UNUSED_RESULT; StringBuilder &operator<<(StringBuilder &sb, const HttpUrl &url); +class HttpUrlQuery { + public: + vector<string> path_; + vector<std::pair<string, string>> args_; + + bool has_arg(Slice key) const; + + Slice get_arg(Slice key) const; +}; + +HttpUrlQuery parse_url_query(Slice query); + +string get_url_host(Slice url); + string get_url_query_file_name(const string &query); -string get_url_file_name(const string &url); +string get_url_file_name(Slice url); } // namespace td |