aboutsummaryrefslogtreecommitdiffhomepage
path: root/td/telegram/Payments.cpp
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2024-05-16 14:08:53 +0300
committerlevlam <levlam@telegram.org>2024-05-16 14:08:53 +0300
commit60064f8c2cc168fe8119a70db5813d8abdcc17ca (patch)
tree6ec8fead3b807818673518ecac520abadada5474 /td/telegram/Payments.cpp
parent7ab4d9b87bfa5ccc131f44c62dd04af42eabff67 (diff)
Add telegramPaymentPurposeStars.
Diffstat (limited to 'td/telegram/Payments.cpp')
-rw-r--r--td/telegram/Payments.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/td/telegram/Payments.cpp b/td/telegram/Payments.cpp
index 6162af2c8..08e79c8b1 100644
--- a/td/telegram/Payments.cpp
+++ b/td/telegram/Payments.cpp
@@ -79,7 +79,7 @@ Result<InputInvoiceInfo> get_input_invoice_info(Td *td, td_api::object_ptr<td_ap
}
switch (invoice->purpose_->get_id()) {
case td_api::telegramPaymentPurposePremiumGiftCodes::ID: {
- auto p = static_cast<const td_api::telegramPaymentPurposePremiumGiftCodes *>(invoice->purpose_.get());
+ auto p = static_cast<td_api::telegramPaymentPurposePremiumGiftCodes *>(invoice->purpose_.get());
vector<telegram_api::object_ptr<telegram_api::InputUser>> input_users;
for (auto user_id : p->user_ids_) {
TRY_RESULT(input_user, td->user_manager_->get_input_user(UserId(user_id)));
@@ -88,6 +88,9 @@ Result<InputInvoiceInfo> get_input_invoice_info(Td *td, td_api::object_ptr<td_ap
if (p->amount_ <= 0 || !check_currency_amount(p->amount_)) {
return Status::Error(400, "Invalid amount of the currency specified");
}
+ if (!clean_input_string(p->currency_)) {
+ return Status::Error(400, "Strings must be encoded in UTF-8");
+ }
DialogId boosted_dialog_id(p->boosted_chat_id_);
TRY_RESULT(boost_input_peer, get_boost_input_peer(td, boosted_dialog_id));
int32 flags = 0;
@@ -105,10 +108,13 @@ Result<InputInvoiceInfo> get_input_invoice_info(Td *td, td_api::object_ptr<td_ap
break;
}
case td_api::telegramPaymentPurposePremiumGiveaway::ID: {
- auto p = static_cast<const td_api::telegramPaymentPurposePremiumGiveaway *>(invoice->purpose_.get());
+ auto p = static_cast<td_api::telegramPaymentPurposePremiumGiveaway *>(invoice->purpose_.get());
if (p->amount_ <= 0 || !check_currency_amount(p->amount_)) {
return Status::Error(400, "Invalid amount of the currency specified");
}
+ if (!clean_input_string(p->currency_)) {
+ return Status::Error(400, "Strings must be encoded in UTF-8");
+ }
TRY_RESULT(parameters, GiveawayParameters::get_giveaway_parameters(td, p->parameters_.get()));
auto option = telegram_api::make_object<telegram_api::premiumGiftCodeOption>(
0, p->winner_count_, p->month_count_, string(), 0, p->currency_, p->amount_);
@@ -116,6 +122,19 @@ Result<InputInvoiceInfo> get_input_invoice_info(Td *td, td_api::object_ptr<td_ap
parameters.get_input_store_payment_premium_giveaway(td, p->currency_, p->amount_), std::move(option));
break;
}
+ case td_api::telegramPaymentPurposeStars::ID: {
+ auto p = static_cast<td_api::telegramPaymentPurposeStars *>(invoice->purpose_.get());
+ if (p->amount_ <= 0 || !check_currency_amount(p->amount_)) {
+ return Status::Error(400, "Invalid amount of the currency specified");
+ }
+ if (!clean_input_string(p->currency_)) {
+ return Status::Error(400, "Strings must be encoded in UTF-8");
+ }
+ auto option = telegram_api::make_object<telegram_api::starsTopupOption>(0, false /*ignored*/, p->star_count_,
+ string(), p->currency_, p->amount_);
+ result.input_invoice_ = telegram_api::make_object<telegram_api::inputInvoiceStars>(std::move(option));
+ break;
+ }
default:
UNREACHABLE();
}