summaryrefslogtreecommitdiff
path: root/libs/tdlib/td/td/telegram/Payments.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/tdlib/td/td/telegram/Payments.hpp')
-rw-r--r--libs/tdlib/td/td/telegram/Payments.hpp134
1 files changed, 134 insertions, 0 deletions
diff --git a/libs/tdlib/td/td/telegram/Payments.hpp b/libs/tdlib/td/td/telegram/Payments.hpp
new file mode 100644
index 0000000000..e37773ca57
--- /dev/null
+++ b/libs/tdlib/td/td/telegram/Payments.hpp
@@ -0,0 +1,134 @@
+//
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+#pragma once
+
+#include "td/telegram/Payments.h"
+
+#include "td/telegram/Photo.hpp"
+
+#include "td/utils/tl_helpers.h"
+
+namespace td {
+
+template <class StorerT>
+void store(const LabeledPricePart &labeled_price_part, StorerT &storer) {
+ store(labeled_price_part.label, storer);
+ store(labeled_price_part.amount, storer);
+}
+
+template <class ParserT>
+void parse(LabeledPricePart &labeled_price_part, ParserT &parser) {
+ parse(labeled_price_part.label, parser);
+ parse(labeled_price_part.amount, parser);
+}
+
+template <class StorerT>
+void store(const Invoice &invoice, StorerT &storer) {
+ BEGIN_STORE_FLAGS();
+ STORE_FLAG(invoice.is_test);
+ STORE_FLAG(invoice.need_name);
+ STORE_FLAG(invoice.need_phone_number);
+ STORE_FLAG(invoice.need_email_address);
+ STORE_FLAG(invoice.need_shipping_address);
+ STORE_FLAG(invoice.is_flexible);
+ STORE_FLAG(invoice.send_phone_number_to_provider);
+ STORE_FLAG(invoice.send_email_address_to_provider);
+ END_STORE_FLAGS();
+ store(invoice.currency, storer);
+ store(invoice.price_parts, storer);
+}
+
+template <class ParserT>
+void parse(Invoice &invoice, ParserT &parser) {
+ BEGIN_PARSE_FLAGS();
+ PARSE_FLAG(invoice.is_test);
+ PARSE_FLAG(invoice.need_name);
+ PARSE_FLAG(invoice.need_phone_number);
+ PARSE_FLAG(invoice.need_email_address);
+ PARSE_FLAG(invoice.need_shipping_address);
+ PARSE_FLAG(invoice.is_flexible);
+ PARSE_FLAG(invoice.send_phone_number_to_provider);
+ PARSE_FLAG(invoice.send_email_address_to_provider);
+ END_PARSE_FLAGS();
+ parse(invoice.currency, parser);
+ parse(invoice.price_parts, parser);
+}
+
+template <class StorerT>
+void store(const ShippingAddress &shipping_address, StorerT &storer) {
+ store(shipping_address.country_code, storer);
+ store(shipping_address.state, storer);
+ store(shipping_address.city, storer);
+ store(shipping_address.street_line1, storer);
+ store(shipping_address.street_line2, storer);
+ store(shipping_address.postal_code, storer);
+}
+
+template <class ParserT>
+void parse(ShippingAddress &shipping_address, ParserT &parser) {
+ parse(shipping_address.country_code, parser);
+ parse(shipping_address.state, parser);
+ parse(shipping_address.city, parser);
+ parse(shipping_address.street_line1, parser);
+ parse(shipping_address.street_line2, parser);
+ parse(shipping_address.postal_code, parser);
+}
+
+template <class StorerT>
+void store(const OrderInfo &order_info, StorerT &storer) {
+ bool has_name = !order_info.name.empty();
+ bool has_phone_number = !order_info.phone_number.empty();
+ bool has_email_address = !order_info.email_address.empty();
+ bool has_shipping_address = order_info.shipping_address != nullptr;
+ BEGIN_STORE_FLAGS();
+ STORE_FLAG(has_name);
+ STORE_FLAG(has_phone_number);
+ STORE_FLAG(has_email_address);
+ STORE_FLAG(has_shipping_address);
+ END_STORE_FLAGS();
+ if (has_name) {
+ store(order_info.name, storer);
+ }
+ if (has_phone_number) {
+ store(order_info.phone_number, storer);
+ }
+ if (has_email_address) {
+ store(order_info.email_address, storer);
+ }
+ if (has_shipping_address) {
+ store(*order_info.shipping_address, storer);
+ }
+}
+
+template <class ParserT>
+void parse(OrderInfo &order_info, ParserT &parser) {
+ bool has_name;
+ bool has_phone_number;
+ bool has_email_address;
+ bool has_shipping_address;
+ BEGIN_PARSE_FLAGS();
+ PARSE_FLAG(has_name);
+ PARSE_FLAG(has_phone_number);
+ PARSE_FLAG(has_email_address);
+ PARSE_FLAG(has_shipping_address);
+ END_PARSE_FLAGS();
+ if (has_name) {
+ parse(order_info.name, parser);
+ }
+ if (has_phone_number) {
+ parse(order_info.phone_number, parser);
+ }
+ if (has_email_address) {
+ parse(order_info.email_address, parser);
+ }
+ if (has_shipping_address) {
+ order_info.shipping_address = make_unique<ShippingAddress>();
+ parse(*order_info.shipping_address, parser);
+ }
+}
+
+} // namespace td