From 3678343a0645c0b260bc8f90918197ae959062ed Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 27 Feb 2023 01:17:22 +0300 Subject: [PATCH] Simplify language code check. --- td/telegram/BotCommand.cpp | 25 +++---------------------- td/telegram/misc.cpp | 11 +++++++++++ td/telegram/misc.h | 4 ++++ 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/td/telegram/BotCommand.cpp b/td/telegram/BotCommand.cpp index 59ca71b64..0711f6ffb 100644 --- a/td/telegram/BotCommand.cpp +++ b/td/telegram/BotCommand.cpp @@ -141,23 +141,10 @@ bool operator==(const BotCommands &lhs, const BotCommands &rhs) { return lhs.bot_user_id_ == rhs.bot_user_id_ && lhs.commands_ == rhs.commands_; } -static bool is_valid_language_code(const string &language_code) { - if (language_code.empty()) { - return true; - } - if (language_code.size() != 2) { - return false; - } - return 'a' <= language_code[0] && language_code[0] <= 'z' && 'a' <= language_code[1] && language_code[1] <= 'z'; -} - void set_commands(Td *td, td_api::object_ptr &&scope_ptr, string &&language_code, vector> &&commands, Promise &&promise) { TRY_RESULT_PROMISE(promise, scope, BotCommandScope::get_bot_command_scope(td, std::move(scope_ptr))); - - if (!is_valid_language_code(language_code)) { - return promise.set_error(Status::Error(400, "Invalid language code specified")); - } + TRY_STATUS_PROMISE(promise, validate_bot_language_code(language_code)); vector new_commands; for (auto &command : commands) { @@ -204,10 +191,7 @@ void set_commands(Td *td, td_api::object_ptr &&scope_pt void delete_commands(Td *td, td_api::object_ptr &&scope_ptr, string &&language_code, Promise &&promise) { TRY_RESULT_PROMISE(promise, scope, BotCommandScope::get_bot_command_scope(td, std::move(scope_ptr))); - - if (!is_valid_language_code(language_code)) { - return promise.set_error(Status::Error(400, "Invalid language code specified")); - } + TRY_STATUS_PROMISE(promise, validate_bot_language_code(language_code)); td->create_handler(std::move(promise))->send(scope, language_code); } @@ -215,10 +199,7 @@ void delete_commands(Td *td, td_api::object_ptr &&scope void get_commands(Td *td, td_api::object_ptr &&scope_ptr, string &&language_code, Promise> &&promise) { TRY_RESULT_PROMISE(promise, scope, BotCommandScope::get_bot_command_scope(td, std::move(scope_ptr))); - - if (!is_valid_language_code(language_code)) { - return promise.set_error(Status::Error(400, "Invalid language code specified")); - } + TRY_STATUS_PROMISE(promise, validate_bot_language_code(language_code)); td->create_handler(std::move(promise))->send(scope, language_code); } diff --git a/td/telegram/misc.cpp b/td/telegram/misc.cpp index f8917a80d..800ef0a4c 100644 --- a/td/telegram/misc.cpp +++ b/td/telegram/misc.cpp @@ -340,4 +340,15 @@ bool check_currency_amount(int64 amount) { return -MAX_AMOUNT <= amount && amount <= MAX_AMOUNT; } +Status validate_bot_language_code(const string &language_code) { + if (language_code.empty()) { + return Status::OK(); + } + if (language_code.size() == 2 && 'a' <= language_code[0] && language_code[0] <= 'z' && 'a' <= language_code[1] && + language_code[1] <= 'z') { + return Status::OK(); + } + return Status::Error(400, "Invalid language code specified"); +} + } // namespace td diff --git a/td/telegram/misc.h b/td/telegram/misc.h index 611c6b9aa..37c91b76e 100644 --- a/td/telegram/misc.h +++ b/td/telegram/misc.h @@ -8,6 +8,7 @@ #include "td/utils/common.h" #include "td/utils/Slice.h" +#include "td/utils/Status.h" namespace td { @@ -44,4 +45,7 @@ string get_emoji_fingerprint(uint64 num); // checks whether currency amount is valid bool check_currency_amount(int64 amount); +// checks whether language code is valid for bot settings +Status validate_bot_language_code(const string &language_code); + } // namespace td