Return portable tg:// URLs in internalLinkTypeMessage.
This commit is contained in:
parent
9652b075b6
commit
b7ad8e8068
@ -1071,9 +1071,9 @@ unique_ptr<LinkManager::InternalLink> LinkManager::parse_tg_link_query(Slice que
|
|||||||
if (is_valid_username(get_arg("domain"))) {
|
if (is_valid_username(get_arg("domain"))) {
|
||||||
if (has_arg("post")) {
|
if (has_arg("post")) {
|
||||||
// resolve?domain=<username>&post=12345&single&thread=<thread_id>&comment=<message_id>&t=<media_timestamp>
|
// resolve?domain=<username>&post=12345&single&thread=<thread_id>&comment=<message_id>&t=<media_timestamp>
|
||||||
return td::make_unique<InternalLinkMessage>(PSTRING() << "tg:resolve" << copy_arg("domain") << copy_arg("post")
|
return td::make_unique<InternalLinkMessage>(
|
||||||
<< copy_arg("single") << copy_arg("thread")
|
PSTRING() << "tg://resolve" << copy_arg("domain") << copy_arg("post") << copy_arg("single")
|
||||||
<< copy_arg("comment") << copy_arg("t"));
|
<< copy_arg("thread") << copy_arg("comment") << copy_arg("t"));
|
||||||
}
|
}
|
||||||
auto username = get_arg("domain");
|
auto username = get_arg("domain");
|
||||||
for (auto &arg : url_query.args_) {
|
for (auto &arg : url_query.args_) {
|
||||||
@ -1256,7 +1256,7 @@ unique_ptr<LinkManager::InternalLink> LinkManager::parse_tg_link_query(Slice que
|
|||||||
// privatepost?channel=123456789&post=12345&single&thread=<thread_id>&comment=<message_id>&t=<media_timestamp>
|
// privatepost?channel=123456789&post=12345&single&thread=<thread_id>&comment=<message_id>&t=<media_timestamp>
|
||||||
if (has_arg("channel") && has_arg("post")) {
|
if (has_arg("channel") && has_arg("post")) {
|
||||||
return td::make_unique<InternalLinkMessage>(
|
return td::make_unique<InternalLinkMessage>(
|
||||||
PSTRING() << "tg:privatepost" << copy_arg("channel") << copy_arg("post") << copy_arg("single")
|
PSTRING() << "tg://privatepost" << copy_arg("channel") << copy_arg("post") << copy_arg("single")
|
||||||
<< copy_arg("thread") << copy_arg("comment") << copy_arg("t"));
|
<< copy_arg("thread") << copy_arg("comment") << copy_arg("t"));
|
||||||
}
|
}
|
||||||
} else if (path.size() == 1 && path[0] == "bg") {
|
} else if (path.size() == 1 && path[0] == "bg") {
|
||||||
@ -1323,7 +1323,7 @@ unique_ptr<LinkManager::InternalLink> LinkManager::parse_t_me_link_query(Slice q
|
|||||||
thread = PSTRING() << "&thread=" << post;
|
thread = PSTRING() << "&thread=" << post;
|
||||||
post = to_integer<int64>(path[3]);
|
post = to_integer<int64>(path[3]);
|
||||||
}
|
}
|
||||||
return td::make_unique<InternalLinkMessage>(PSTRING() << "tg:privatepost?channel=" << to_integer<int64>(path[1])
|
return td::make_unique<InternalLinkMessage>(PSTRING() << "tg://privatepost?channel=" << to_integer<int64>(path[1])
|
||||||
<< "&post=" << post << copy_arg("single") << thread
|
<< "&post=" << post << copy_arg("single") << thread
|
||||||
<< copy_arg("comment") << copy_arg("t"));
|
<< copy_arg("comment") << copy_arg("t"));
|
||||||
}
|
}
|
||||||
@ -1450,7 +1450,7 @@ unique_ptr<LinkManager::InternalLink> LinkManager::parse_t_me_link_query(Slice q
|
|||||||
thread = PSTRING() << "&thread=" << post;
|
thread = PSTRING() << "&thread=" << post;
|
||||||
post = to_integer<int64>(path[2]);
|
post = to_integer<int64>(path[2]);
|
||||||
}
|
}
|
||||||
return td::make_unique<InternalLinkMessage>(PSTRING() << "tg:resolve?domain=" << url_encode(path[0])
|
return td::make_unique<InternalLinkMessage>(PSTRING() << "tg://resolve?domain=" << url_encode(path[0])
|
||||||
<< "&post=" << post << copy_arg("single") << thread
|
<< "&post=" << post << copy_arg("single") << thread
|
||||||
<< copy_arg("comment") << copy_arg("t"));
|
<< copy_arg("comment") << copy_arg("t"));
|
||||||
}
|
}
|
||||||
|
@ -250,21 +250,21 @@ TEST(Link, parse_internal_link) {
|
|||||||
start_parameter);
|
start_parameter);
|
||||||
};
|
};
|
||||||
|
|
||||||
parse_internal_link("t.me/levlam/1", message("tg:resolve?domain=levlam&post=1"));
|
parse_internal_link("t.me/levlam/1", message("tg://resolve?domain=levlam&post=1"));
|
||||||
parse_internal_link("telegram.me/levlam/1", message("tg:resolve?domain=levlam&post=1"));
|
parse_internal_link("telegram.me/levlam/1", message("tg://resolve?domain=levlam&post=1"));
|
||||||
parse_internal_link("telegram.dog/levlam/1", message("tg:resolve?domain=levlam&post=1"));
|
parse_internal_link("telegram.dog/levlam/1", message("tg://resolve?domain=levlam&post=1"));
|
||||||
parse_internal_link("www.t.me/levlam/1", message("tg:resolve?domain=levlam&post=1"));
|
parse_internal_link("www.t.me/levlam/1", message("tg://resolve?domain=levlam&post=1"));
|
||||||
parse_internal_link("www%2etelegram.me/levlam/1", message("tg:resolve?domain=levlam&post=1"));
|
parse_internal_link("www%2etelegram.me/levlam/1", message("tg://resolve?domain=levlam&post=1"));
|
||||||
parse_internal_link("www%2Etelegram.dog/levlam/1", message("tg:resolve?domain=levlam&post=1"));
|
parse_internal_link("www%2Etelegram.dog/levlam/1", message("tg://resolve?domain=levlam&post=1"));
|
||||||
parse_internal_link("www%252Etelegram.dog/levlam/1", nullptr);
|
parse_internal_link("www%252Etelegram.dog/levlam/1", nullptr);
|
||||||
parse_internal_link("www.t.me/s/s/s/s/s/joinchat/1", nullptr);
|
parse_internal_link("www.t.me/s/s/s/s/s/joinchat/1", nullptr);
|
||||||
parse_internal_link("www.t.me/s/s/s/s/s/joinchat/a", chat_invite("a"));
|
parse_internal_link("www.t.me/s/s/s/s/s/joinchat/a", chat_invite("a"));
|
||||||
parse_internal_link("www.t.me/s/%73/%73/s/%73/joinchat/a", chat_invite("a"));
|
parse_internal_link("www.t.me/s/%73/%73/s/%73/joinchat/a", chat_invite("a"));
|
||||||
parse_internal_link("http://t.me/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/joinchat/a", chat_invite("a"));
|
parse_internal_link("http://t.me/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/joinchat/a", chat_invite("a"));
|
||||||
parse_internal_link("http://t.me/levlam/1", message("tg:resolve?domain=levlam&post=1"));
|
parse_internal_link("http://t.me/levlam/1", message("tg://resolve?domain=levlam&post=1"));
|
||||||
parse_internal_link("https://t.me/levlam/1", message("tg:resolve?domain=levlam&post=1"));
|
parse_internal_link("https://t.me/levlam/1", message("tg://resolve?domain=levlam&post=1"));
|
||||||
parse_internal_link("hTtp://www.t.me:443/levlam/1", message("tg:resolve?domain=levlam&post=1"));
|
parse_internal_link("hTtp://www.t.me:443/levlam/1", message("tg://resolve?domain=levlam&post=1"));
|
||||||
parse_internal_link("httPs://t.me:80/levlam/1", message("tg:resolve?domain=levlam&post=1"));
|
parse_internal_link("httPs://t.me:80/levlam/1", message("tg://resolve?domain=levlam&post=1"));
|
||||||
parse_internal_link("https://t.me:200/levlam/1", nullptr);
|
parse_internal_link("https://t.me:200/levlam/1", nullptr);
|
||||||
parse_internal_link("http:t.me/levlam/1", nullptr);
|
parse_internal_link("http:t.me/levlam/1", nullptr);
|
||||||
parse_internal_link("t.dog/levlam/1", nullptr);
|
parse_internal_link("t.dog/levlam/1", nullptr);
|
||||||
@ -272,13 +272,13 @@ TEST(Link, parse_internal_link) {
|
|||||||
parse_internal_link("t.men/levlam/1", nullptr);
|
parse_internal_link("t.men/levlam/1", nullptr);
|
||||||
|
|
||||||
parse_internal_link("tg:resolve?domain=username&post=12345&single",
|
parse_internal_link("tg:resolve?domain=username&post=12345&single",
|
||||||
message("tg:resolve?domain=username&post=12345&single"));
|
message("tg://resolve?domain=username&post=12345&single"));
|
||||||
parse_internal_link("tg:resolve?domain=username&post=12345&single&startattach=1&attach=test",
|
parse_internal_link("tg:resolve?domain=username&post=12345&single&startattach=1&attach=test",
|
||||||
message("tg:resolve?domain=username&post=12345&single"));
|
message("tg://resolve?domain=username&post=12345&single"));
|
||||||
parse_internal_link("tg:resolve?domain=user%31name&post=%312345&single&comment=456&t=789&single&thread=123%20%31",
|
parse_internal_link("tg:resolve?domain=user%31name&post=%312345&single&comment=456&t=789&single&thread=123%20%31",
|
||||||
message("tg:resolve?domain=user1name&post=12345&single&thread=123%201&comment=456&t=789"));
|
message("tg://resolve?domain=user1name&post=12345&single&thread=123%201&comment=456&t=789"));
|
||||||
parse_internal_link("TG://resolve?domain=username&post=12345&single&voicechat=aasd",
|
parse_internal_link("TG://resolve?domain=username&post=12345&single&voicechat=aasd",
|
||||||
message("tg:resolve?domain=username&post=12345&single"));
|
message("tg://resolve?domain=username&post=12345&single"));
|
||||||
parse_internal_link("TG://test@resolve?domain=username&post=12345&single", nullptr);
|
parse_internal_link("TG://test@resolve?domain=username&post=12345&single", nullptr);
|
||||||
parse_internal_link("tg:resolve:80?domain=username&post=12345&single", nullptr);
|
parse_internal_link("tg:resolve:80?domain=username&post=12345&single", nullptr);
|
||||||
parse_internal_link("tg:http://resolve?domain=username&post=12345&single", nullptr);
|
parse_internal_link("tg:http://resolve?domain=username&post=12345&single", nullptr);
|
||||||
@ -347,19 +347,19 @@ TEST(Link, parse_internal_link) {
|
|||||||
parse_internal_link("tg:contact?token=", unknown_deep_link("tg://contact?token="));
|
parse_internal_link("tg:contact?token=", unknown_deep_link("tg://contact?token="));
|
||||||
parse_internal_link("tg:contact?token=+123", user_token(" 123"));
|
parse_internal_link("tg:contact?token=+123", user_token(" 123"));
|
||||||
|
|
||||||
parse_internal_link("t.me/username/12345?single", message("tg:resolve?domain=username&post=12345&single"));
|
parse_internal_link("t.me/username/12345?single", message("tg://resolve?domain=username&post=12345&single"));
|
||||||
parse_internal_link("t.me/username/12345?asdasd", message("tg:resolve?domain=username&post=12345"));
|
parse_internal_link("t.me/username/12345?asdasd", message("tg://resolve?domain=username&post=12345"));
|
||||||
parse_internal_link("t.me/username/12345", message("tg:resolve?domain=username&post=12345"));
|
parse_internal_link("t.me/username/12345", message("tg://resolve?domain=username&post=12345"));
|
||||||
parse_internal_link("t.me/username/12345/", message("tg:resolve?domain=username&post=12345"));
|
parse_internal_link("t.me/username/12345/", message("tg://resolve?domain=username&post=12345"));
|
||||||
parse_internal_link("t.me/username/12345#asdasd", message("tg:resolve?domain=username&post=12345"));
|
parse_internal_link("t.me/username/12345#asdasd", message("tg://resolve?domain=username&post=12345"));
|
||||||
parse_internal_link("t.me/username/12345//?voicechat=&single",
|
parse_internal_link("t.me/username/12345//?voicechat=&single",
|
||||||
message("tg:resolve?domain=username&post=12345&single"));
|
message("tg://resolve?domain=username&post=12345&single"));
|
||||||
parse_internal_link("t.me/username/12345/asdasd//asd/asd/asd/?single",
|
parse_internal_link("t.me/username/12345/asdasd//asd/asd/asd/?single",
|
||||||
message("tg:resolve?domain=username&post=12345&single"));
|
message("tg://resolve?domain=username&post=12345&single"));
|
||||||
parse_internal_link("t.me/username/12345/67890/asdasd//asd/asd/asd/?single",
|
parse_internal_link("t.me/username/12345/67890/asdasd//asd/asd/asd/?single",
|
||||||
message("tg:resolve?domain=username&post=67890&single&thread=12345"));
|
message("tg://resolve?domain=username&post=67890&single&thread=12345"));
|
||||||
parse_internal_link("t.me/username/1asdasdas/asdasd//asd/asd/asd/?single",
|
parse_internal_link("t.me/username/1asdasdas/asdasd//asd/asd/asd/?single",
|
||||||
message("tg:resolve?domain=username&post=1&single"));
|
message("tg://resolve?domain=username&post=1&single"));
|
||||||
parse_internal_link("t.me/username/0", public_chat("username"));
|
parse_internal_link("t.me/username/0", public_chat("username"));
|
||||||
parse_internal_link("t.me/username/-12345", public_chat("username"));
|
parse_internal_link("t.me/username/-12345", public_chat("username"));
|
||||||
parse_internal_link("t.me//12345?single", nullptr);
|
parse_internal_link("t.me//12345?single", nullptr);
|
||||||
@ -392,19 +392,19 @@ TEST(Link, parse_internal_link) {
|
|||||||
parse_internal_link("tg:privatepost?channel=username/12345&single",
|
parse_internal_link("tg:privatepost?channel=username/12345&single",
|
||||||
unknown_deep_link("tg://privatepost?channel=username/12345&single"));
|
unknown_deep_link("tg://privatepost?channel=username/12345&single"));
|
||||||
parse_internal_link("tg:privatepost?channel=username&post=12345",
|
parse_internal_link("tg:privatepost?channel=username&post=12345",
|
||||||
message("tg:privatepost?channel=username&post=12345"));
|
message("tg://privatepost?channel=username&post=12345"));
|
||||||
|
|
||||||
parse_internal_link("t.me/c/12345?single", nullptr);
|
parse_internal_link("t.me/c/12345?single", nullptr);
|
||||||
parse_internal_link("t.me/c/1/c?single", nullptr);
|
parse_internal_link("t.me/c/1/c?single", nullptr);
|
||||||
parse_internal_link("t.me/c/c/1?single", nullptr);
|
parse_internal_link("t.me/c/c/1?single", nullptr);
|
||||||
parse_internal_link("t.me/c//1?single", nullptr);
|
parse_internal_link("t.me/c//1?single", nullptr);
|
||||||
parse_internal_link("t.me/c/12345/123", message("tg:privatepost?channel=12345&post=123"));
|
parse_internal_link("t.me/c/12345/123", message("tg://privatepost?channel=12345&post=123"));
|
||||||
parse_internal_link("t.me/c/12345/123?single", message("tg:privatepost?channel=12345&post=123&single"));
|
parse_internal_link("t.me/c/12345/123?single", message("tg://privatepost?channel=12345&post=123&single"));
|
||||||
parse_internal_link("t.me/c/12345/123/asd/asd////?single", message("tg:privatepost?channel=12345&post=123&single"));
|
parse_internal_link("t.me/c/12345/123/asd/asd////?single", message("tg://privatepost?channel=12345&post=123&single"));
|
||||||
parse_internal_link("t.me/c/12345/123/456/asd/asd////?single",
|
parse_internal_link("t.me/c/12345/123/456/asd/asd////?single",
|
||||||
message("tg:privatepost?channel=12345&post=456&single&thread=123"));
|
message("tg://privatepost?channel=12345&post=456&single&thread=123"));
|
||||||
parse_internal_link("t.me/c/%312345/%3123?comment=456&t=789&single&thread=123%20%31",
|
parse_internal_link("t.me/c/%312345/%3123?comment=456&t=789&single&thread=123%20%31",
|
||||||
message("tg:privatepost?channel=12345&post=123&single&thread=123%201&comment=456&t=789"));
|
message("tg://privatepost?channel=12345&post=123&single&thread=123%201&comment=456&t=789"));
|
||||||
|
|
||||||
parse_internal_link("tg:bg?color=111111#asdasd", background("111111"));
|
parse_internal_link("tg:bg?color=111111#asdasd", background("111111"));
|
||||||
parse_internal_link("tg:bg?color=11111%31", background("111111"));
|
parse_internal_link("tg:bg?color=11111%31", background("111111"));
|
||||||
@ -1023,8 +1023,8 @@ TEST(Link, parse_internal_link) {
|
|||||||
parse_internal_link("username.t.me////0/a//s/as?start=", bot_start("username", ""));
|
parse_internal_link("username.t.me////0/a//s/as?start=", bot_start("username", ""));
|
||||||
parse_internal_link("username.t.me?start=as", bot_start("username", "as"));
|
parse_internal_link("username.t.me?start=as", bot_start("username", "as"));
|
||||||
parse_internal_link("username.t.me", public_chat("username"));
|
parse_internal_link("username.t.me", public_chat("username"));
|
||||||
parse_internal_link("aAAb.t.me/12345?single", message("tg:resolve?domain=aaab&post=12345&single"));
|
parse_internal_link("aAAb.t.me/12345?single", message("tg://resolve?domain=aaab&post=12345&single"));
|
||||||
parse_internal_link("telegram.t.me/195", message("tg:resolve?domain=telegram&post=195"));
|
parse_internal_link("telegram.t.me/195", message("tg://resolve?domain=telegram&post=195"));
|
||||||
parse_internal_link("shares.t.me", public_chat("shares"));
|
parse_internal_link("shares.t.me", public_chat("shares"));
|
||||||
|
|
||||||
parse_internal_link("c.t.me/12345?single", nullptr);
|
parse_internal_link("c.t.me/12345?single", nullptr);
|
||||||
|
Loading…
Reference in New Issue
Block a user