diff options
| author | levlam <levlam@telegram.org> | 2026-01-19 23:02:56 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2026-01-19 23:02:56 +0300 |
| commit | d4aa7322c04c5711c949521208c4ed8061df90b4 (patch) | |
| tree | 345bd6c97bc868ae415e540967c8c2368ed6b8e9 | |
| parent | a41d1fa8f1a98b97689b704625bb6684bb892021 (diff) | |
Use td_api::proxy in td_api::internalLinkTypeProxy.
| -rw-r--r-- | td/generate/scheme/td_api.tl | 7 | ||||
| -rw-r--r-- | td/telegram/LinkManager.cpp | 5 | ||||
| -rw-r--r-- | td/telegram/net/Proxy.cpp | 7 | ||||
| -rw-r--r-- | td/telegram/net/Proxy.h | 2 | ||||
| -rw-r--r-- | test/link.cpp | 8 |
5 files changed, 18 insertions, 11 deletions
diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index f0bcf6a6c..4407aaf0d 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -8653,11 +8653,8 @@ internalLinkTypePremiumGiftCode code:string = InternalLinkType; //@referrer Referrer specified in the link internalLinkTypePremiumGiftPurchase referrer:string = InternalLinkType; -//@description The link is a link to a proxy. Call addProxy with the given parameters to process the link and add the proxy -//@server Proxy server domain or IP address -//@port Proxy server port -//@type Type of the proxy -internalLinkTypeProxy server:string port:int32 type:ProxyType = InternalLinkType; +//@description The link is a link to a proxy. Call addProxy with the given parameters to process the link and add the proxy @proxy The proxy +internalLinkTypeProxy proxy:proxy = InternalLinkType; //@description The link is a link to a chat by its username. Call searchPublicChat with the given chat username to process the link. //-If the chat is found, open its profile information screen or the chat itself. diff --git a/td/telegram/LinkManager.cpp b/td/telegram/LinkManager.cpp index 0f796cbd1..e1c2b439c 100644 --- a/td/telegram/LinkManager.cpp +++ b/td/telegram/LinkManager.cpp @@ -1060,7 +1060,8 @@ class LinkManager::InternalLinkProxy final : public InternalLink { return nullptr; } }(); - return td_api::make_object<td_api::internalLinkTypeProxy>(server_, port_, std::move(proxy_type)); + return td_api::make_object<td_api::internalLinkTypeProxy>( + td_api::make_object<td_api::proxy>(server_, port_, std::move(proxy_type))); } public: @@ -3352,7 +3353,7 @@ Result<string> LinkManager::get_internal_link_impl(const td_api::InternalLinkTyp } case td_api::internalLinkTypeProxy::ID: { auto link = static_cast<const td_api::internalLinkTypeProxy *>(type_ptr); - TRY_RESULT(proxy, Proxy::create_proxy(link->server_, link->port_, link->type_.get())); + TRY_RESULT(proxy, Proxy::create_proxy(link->proxy_.get())); return get_proxy_link(proxy, is_internal); } case td_api::internalLinkTypePublicChat::ID: { diff --git a/td/telegram/net/Proxy.cpp b/td/telegram/net/Proxy.cpp index e0e74cf2e..a22e87795 100644 --- a/td/telegram/net/Proxy.cpp +++ b/td/telegram/net/Proxy.cpp @@ -48,6 +48,13 @@ Result<Proxy> Proxy::create_proxy(string server, int port, const td_api::ProxyTy } } +Result<Proxy> Proxy::create_proxy(const td_api::proxy *proxy) { + if (proxy == nullptr) { + return Status::Error(400, "Proxy must be non-empty"); + } + return create_proxy(proxy->server_, proxy->port_, proxy->type_.get()); +} + td_api::object_ptr<td_api::proxy> Proxy::get_proxy_object() const { auto type = [&]() -> td_api::object_ptr<td_api::ProxyType> { switch (type_) { diff --git a/td/telegram/net/Proxy.h b/td/telegram/net/Proxy.h index d9e2775f4..dfcc0d8a3 100644 --- a/td/telegram/net/Proxy.h +++ b/td/telegram/net/Proxy.h @@ -33,6 +33,8 @@ class Proxy { public: static Result<Proxy> create_proxy(string server, int port, const td_api::ProxyType *proxy_type); + static Result<Proxy> create_proxy(const td_api::proxy *proxy); + static Proxy socks5(string server, int32 port, string user, string password) { Proxy proxy; proxy.type_ = Type::Socks5; diff --git a/test/link.cpp b/test/link.cpp index 58610b4ae..a43aa901f 100644 --- a/test/link.cpp +++ b/test/link.cpp @@ -444,14 +444,14 @@ static auto premium_gift_purchase(const td::string &referrer) { } static auto proxy_mtproto(const td::string &server, td::int32 port, const td::string &secret) { - return td::td_api::make_object<td::td_api::internalLinkTypeProxy>( - server, port, td::td_api::make_object<td::td_api::proxyTypeMtproto>(secret)); + return td::td_api::make_object<td::td_api::internalLinkTypeProxy>(td::td_api::make_object<td::td_api::proxy>( + server, port, td::td_api::make_object<td::td_api::proxyTypeMtproto>(secret))); } static auto proxy_socks(const td::string &server, td::int32 port, const td::string &username, const td::string &password) { - return td::td_api::make_object<td::td_api::internalLinkTypeProxy>( - server, port, td::td_api::make_object<td::td_api::proxyTypeSocks5>(username, password)); + return td::td_api::make_object<td::td_api::internalLinkTypeProxy>(td::td_api::make_object<td::td_api::proxy>( + server, port, td::td_api::make_object<td::td_api::proxyTypeSocks5>(username, password))); } static auto public_chat(const td::string &chat_username, const td::string &draft_text = td::string(), |
