tgbotxx 1.1.9.2
Telegram Bot C++ Library
Loading...
Searching...
No Matches
PaidMedia.hpp
Go to the documentation of this file.
1#pragma once
5
6namespace tgbotxx {
12 struct PaidMedia {
13 PaidMedia() = default;
14 explicit PaidMedia(const nl::json& json) {
15 _fromJson(json);
16 }
17 virtual ~PaidMedia() = default;
18
20 std::string type;
21
24 virtual nl::json toJson() const {
25 nl::json json = nl::json::object();
26 OBJECT_SERIALIZE_FIELD(json, "type", type);
27 return json;
28 }
29
31 virtual void fromJson(const nl::json& json) {
32 OBJECT_DESERIALIZE_FIELD(json, "type", type, "", false);
33 }
34
35 private:
36 void _fromJson(const nl::json& json) {
37 fromJson(json);
38 }
39 };
40
45 PaidMedia::type = "preview";
46 }
47 explicit PaidMediaPreview(const nl::json& json) : PaidMedia(json) {
48 PaidMedia::type = "preview";
49 }
50
52 std::int32_t width{};
53
55 std::int32_t height{};
56
58 std::int32_t duration{};
59
60 nl::json toJson() const override {
61 nl::json json = PaidMedia::toJson();
62 OBJECT_SERIALIZE_FIELD(json, "width", width);
63 OBJECT_SERIALIZE_FIELD(json, "height", height);
64 OBJECT_SERIALIZE_FIELD(json, "duration", duration);
65 return json;
66 }
67
68 void fromJson(const nl::json& json) override {
70 OBJECT_DESERIALIZE_FIELD(json, "width", width, 0, true);
71 OBJECT_DESERIALIZE_FIELD(json, "height", height, 0, true);
72 OBJECT_DESERIALIZE_FIELD(json, "duration", duration, 0, true);
73 }
74 };
75
76
81 PaidMedia::type = "photo";
82 }
83 explicit PaidMediaPhoto(const nl::json& json) : PaidMedia(json) {
84 PaidMedia::type = "photo";
85 }
86
88 std::vector<Ptr<PhotoSize>> photo;
89
90 nl::json toJson() const override {
91 nl::json json = PaidMedia::toJson();
93 return json;
94 }
95
96 void fromJson(const nl::json& json) override {
98 OBJECT_DESERIALIZE_FIELD_PTR_ARRAY(json, "photo", photo, false);
99 }
100 };
101
102
107 PaidMedia::type = "video";
108 }
109 explicit PaidMediaVideo(const nl::json& json) : PaidMedia(json) {
110 PaidMedia::type = "video";
111 }
112
115
116 nl::json toJson() const override {
117 nl::json json = PaidMedia::toJson();
118 OBJECT_SERIALIZE_FIELD_PTR(json, "video", video);
119 return json;
120 }
121
122 void fromJson(const nl::json& json) override {
124 OBJECT_DESERIALIZE_FIELD_PTR(json, "video", video, false);
125 }
126 };
127}
#define OBJECT_SERIALIZE_FIELD_PTR(json, json_field, field)
Definition Object.hpp:22
#define OBJECT_SERIALIZE_FIELD_PTR_ARRAY(json, json_field, array_field)
Definition Object.hpp:27
#define OBJECT_DESERIALIZE_FIELD_PTR(json, json_field, field, optional)
Definition Object.hpp:72
#define OBJECT_SERIALIZE_FIELD(json, json_field, field)
Available objects: https://core.telegram.org/bots/api#available-types.
Definition Object.hpp:19
#define OBJECT_DESERIALIZE_FIELD(json, json_field, field, default_value, optional)
Deserialize.
Definition Object.hpp:46
#define OBJECT_DESERIALIZE_FIELD_PTR_ARRAY(json, json_field, array_field, optional)
Definition Object.hpp:89
std::shared_ptr< T > Ptr
Definition Ptr.hpp:6
This object describes paid media. Currently, it can be one of:
Definition PaidMedia.hpp:12
virtual nl::json toJson() const
Serializes this object to JSON.
Definition PaidMedia.hpp:24
virtual void fromJson(const nl::json &json)
Deserializes this object from JSON.
Definition PaidMedia.hpp:31
std::string type
Type of the paid media, one of "preview", "photo" or "video".
Definition PaidMedia.hpp:20
virtual ~PaidMedia()=default
PaidMedia(const nl::json &json)
Definition PaidMedia.hpp:14
The paid media is a photo. https://core.telegram.org/bots/api#paidmediaphoto.
Definition PaidMedia.hpp:79
nl::json toJson() const override
Serializes this object to JSON.
Definition PaidMedia.hpp:90
PaidMediaPhoto(const nl::json &json)
Definition PaidMedia.hpp:83
void fromJson(const nl::json &json) override
Deserializes this object from JSON.
Definition PaidMedia.hpp:96
std::vector< Ptr< PhotoSize > > photo
The photo.
Definition PaidMedia.hpp:88
The paid media isn't available before the payment. https://core.telegram.org/bots/api#paidmediaprevie...
Definition PaidMedia.hpp:43
std::int32_t height
Optional. Media height as defined by the sender.
Definition PaidMedia.hpp:55
PaidMediaPreview(const nl::json &json)
Definition PaidMedia.hpp:47
std::int32_t duration
Optional. Duration of the media in seconds as defined by the sender.
Definition PaidMedia.hpp:58
nl::json toJson() const override
Serializes this object to JSON.
Definition PaidMedia.hpp:60
void fromJson(const nl::json &json) override
Deserializes this object from JSON.
Definition PaidMedia.hpp:68
std::int32_t width
Optional. Media width as defined by the sender.
Definition PaidMedia.hpp:52
The paid media is a video. https://core.telegram.org/bots/api#paidmediavideo.
PaidMediaVideo(const nl::json &json)
void fromJson(const nl::json &json) override
Deserializes this object from JSON.
nl::json toJson() const override
Serializes this object to JSON.
Ptr< Video > video
The video.