From 161b16310a6704500482a74e6d45dcbe6f2f20af Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 8 Jun 2026 22:00:30 +0300 Subject: Add and use Client::get_date_time_formatting_type. --- telegram-bot-api/Client.cpp | 71 ++++++++++++++++++++++----------------------- telegram-bot-api/Client.h | 2 ++ 2 files changed, 36 insertions(+), 37 deletions(-) diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 501b420..f7e31e6 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -11254,43 +11254,7 @@ td::Result> Client::get_text_entity_t if (type == "date_time") { TRY_RESULT(unix_time, object.get_required_int_field("unix_time")); TRY_RESULT(format, object.get_optional_string_field("date_time_format")); - bool is_invalid = false; - auto formatting_type = [&format, &is_invalid]() -> object_ptr { - if (format.empty()) { - return nullptr; - } - if (format == "r" || format == "R") { - return make_object(); - } - auto result = make_object(); - for (auto c : format) { - switch (c) { - case 't': - result->time_precision_ = make_object(); - break; - case 'T': - result->time_precision_ = make_object(); - break; - case 'd': - result->date_precision_ = make_object(); - break; - case 'D': - result->date_precision_ = make_object(); - break; - case 'w': - case 'W': - result->show_day_of_week_ = true; - break; - default: - is_invalid = true; - break; - } - } - return std::move(result); - }(); - if (is_invalid) { - return td::Status::Error(400, "Invalid date-time format specified"); - } + TRY_RESULT(formatting_type, get_date_time_formatting_type(format)); return make_object(unix_time, std::move(formatting_type)); } if (type == "mention" || type == "hashtag" || type == "cashtag" || type == "bot_command" || type == "url" || @@ -18550,6 +18514,39 @@ td::string Client::get_date_time_format(const object_ptr> Client::get_date_time_formatting_type(td::Slice format) { + if (format.empty()) { + return nullptr; + } + if (format == "r" || format == "R") { + return make_object(); + } + auto result = make_object(); + for (auto c : format) { + switch (c) { + case 't': + result->time_precision_ = make_object(); + break; + case 'T': + result->time_precision_ = make_object(); + break; + case 'd': + result->date_precision_ = make_object(); + break; + case 'D': + result->date_precision_ = make_object(); + break; + case 'w': + case 'W': + result->show_day_of_week_ = true; + break; + default: + return td::Status::Error(400, "Invalid date-time format specified"); + } + } + return std::move(result); +} + td::string Client::get_passport_element_type(int32 id) { switch (id) { case td_api::passportElementTypePersonalDetails::ID: diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index 23bb9d8..6d789cb 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -1460,6 +1460,8 @@ class Client final : public WebhookActor::Callback { static td::string get_date_time_format(const object_ptr &formatting_type); + static td::Result> get_date_time_formatting_type(td::Slice format); + static td::string get_passport_element_type(int32 id); static object_ptr get_passport_element_type(td::Slice type); -- cgit v1.2.3