Check data validness before initing InlineKeyboardButton.
This commit is contained in:
parent
1ff1059de8
commit
03de62b29f
@ -246,13 +246,13 @@ static InlineKeyboardButton get_inline_keyboard_button(
|
||||
switch (keyboard_button_ptr->get_id()) {
|
||||
case telegram_api::keyboardButtonUrl::ID: {
|
||||
auto keyboard_button = move_tl_object_as<telegram_api::keyboardButtonUrl>(keyboard_button_ptr);
|
||||
button.type = InlineKeyboardButton::Type::Url;
|
||||
button.text = std::move(keyboard_button->text_);
|
||||
auto r_url = LinkManager::check_link(keyboard_button->url_);
|
||||
if (r_url.is_error()) {
|
||||
LOG(ERROR) << "Inline keyboard " << r_url.error().message();
|
||||
return {};
|
||||
break;
|
||||
}
|
||||
button.type = InlineKeyboardButton::Type::Url;
|
||||
button.text = std::move(keyboard_button->text_);
|
||||
button.data = r_url.move_as_ok();
|
||||
break;
|
||||
}
|
||||
@ -287,38 +287,39 @@ static InlineKeyboardButton get_inline_keyboard_button(
|
||||
}
|
||||
case telegram_api::keyboardButtonUrlAuth::ID: {
|
||||
auto keyboard_button = move_tl_object_as<telegram_api::keyboardButtonUrlAuth>(keyboard_button_ptr);
|
||||
auto r_url = LinkManager::check_link(keyboard_button->url_);
|
||||
if (r_url.is_error()) {
|
||||
LOG(ERROR) << "Inline keyboard Login " << r_url.error().message();
|
||||
break;
|
||||
}
|
||||
button.type = InlineKeyboardButton::Type::UrlAuth;
|
||||
button.id = keyboard_button->button_id_;
|
||||
button.text = std::move(keyboard_button->text_);
|
||||
button.forward_text = std::move(keyboard_button->fwd_text_);
|
||||
auto r_url = LinkManager::check_link(keyboard_button->url_);
|
||||
if (r_url.is_error()) {
|
||||
LOG(ERROR) << "Inline keyboard Login " << r_url.error().message();
|
||||
return {};
|
||||
}
|
||||
button.data = r_url.move_as_ok();
|
||||
break;
|
||||
}
|
||||
case telegram_api::keyboardButtonUserProfile::ID: {
|
||||
auto keyboard_button = move_tl_object_as<telegram_api::keyboardButtonUserProfile>(keyboard_button_ptr);
|
||||
auto user_id = UserId(keyboard_button->user_id_);
|
||||
if (!user_id.is_valid()) {
|
||||
LOG(ERROR) << "Receive " << user_id << " in inline keyboard";
|
||||
break;
|
||||
}
|
||||
button.type = InlineKeyboardButton::Type::User;
|
||||
button.text = std::move(keyboard_button->text_);
|
||||
button.user_id = UserId(keyboard_button->user_id_);
|
||||
if (!button.user_id.is_valid()) {
|
||||
LOG(ERROR) << "Receive " << button.user_id << " in inline keyboard";
|
||||
return {};
|
||||
}
|
||||
button.user_id = user_id;
|
||||
break;
|
||||
}
|
||||
case telegram_api::keyboardButtonWebView::ID: {
|
||||
auto keyboard_button = move_tl_object_as<telegram_api::keyboardButtonWebView>(keyboard_button_ptr);
|
||||
button.type = InlineKeyboardButton::Type::WebView;
|
||||
button.text = std::move(keyboard_button->text_);
|
||||
auto r_url = LinkManager::check_link(keyboard_button->url_);
|
||||
if (r_url.is_error()) {
|
||||
LOG(ERROR) << "Inline keyboard Web App " << r_url.error().message();
|
||||
return {};
|
||||
break;
|
||||
}
|
||||
button.type = InlineKeyboardButton::Type::WebView;
|
||||
button.text = std::move(keyboard_button->text_);
|
||||
button.data = r_url.move_as_ok();
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user