tgbot-cpp
Loading...
Searching...
No Matches
TgTypeParser.h
Go to the documentation of this file.
1#ifndef TGBOT_TGTYPEPARSER_H
2#define TGBOT_TGTYPEPARSER_H
3
4#include "tgbot/export.h"
7#include "tgbot/types/User.h"
8#include "tgbot/types/Chat.h"
14#include "tgbot/types/Audio.h"
16#include "tgbot/types/Video.h"
18#include "tgbot/types/Voice.h"
19#include "tgbot/types/Contact.h"
20#include "tgbot/types/Dice.h"
23#include "tgbot/types/Poll.h"
25#include "tgbot/types/Venue.h"
43#include "tgbot/types/File.h"
91#include "tgbot/types/Sticker.h"
125#include "tgbot/types/Invoice.h"
144#include "tgbot/types/Game.h"
148
149#include <boost/property_tree/json_parser.hpp>
150#include <boost/property_tree/ptree.hpp>
151
152#include <memory>
153#include <sstream>
154#include <string>
155#include <utility>
156#include <vector>
157
158namespace TgBot {
159
160class TGBOT_API TgTypeParser {
161
162public:
163 template<typename T>
164 using JsonToTgTypeFunc = std::shared_ptr<T> (TgTypeParser::*)(const boost::property_tree::ptree&) const;
165
166 template<typename T>
167 using TgTypeToJsonFunc = std::string (TgTypeParser::*)(const std::shared_ptr<T>&) const;
168
169 Update::Ptr parseJsonAndGetUpdate(const boost::property_tree::ptree& data) const;
170 std::string parseUpdate(const Update::Ptr& object) const;
171
172 WebhookInfo::Ptr parseJsonAndGetWebhookInfo(const boost::property_tree::ptree& data) const;
173 std::string parseWebhookInfo(const WebhookInfo::Ptr& object) const;
174
175 User::Ptr parseJsonAndGetUser(const boost::property_tree::ptree& data) const;
176 std::string parseUser(const User::Ptr& object) const;
177
178 Chat::Ptr parseJsonAndGetChat(const boost::property_tree::ptree& data) const;
179 std::string parseChat(const Chat::Ptr& object) const;
180
181 Message::Ptr parseJsonAndGetMessage(const boost::property_tree::ptree& data) const;
182 std::string parseMessage(const Message::Ptr& object) const;
183
184 MessageId::Ptr parseJsonAndGetMessageId(const boost::property_tree::ptree& data) const;
185 std::string parseMessageId(const MessageId::Ptr& object) const;
186
187 MessageEntity::Ptr parseJsonAndGetMessageEntity(const boost::property_tree::ptree& data) const;
188 std::string parseMessageEntity(const MessageEntity::Ptr& object) const;
189
190 PhotoSize::Ptr parseJsonAndGetPhotoSize(const boost::property_tree::ptree& data) const;
191 std::string parsePhotoSize(const PhotoSize::Ptr& object) const;
192
193 Animation::Ptr parseJsonAndGetAnimation(const boost::property_tree::ptree& data) const;
194 std::string parseAnimation(const Animation::Ptr& object) const;
195
196 Audio::Ptr parseJsonAndGetAudio(const boost::property_tree::ptree& data) const;
197 std::string parseAudio(const Audio::Ptr& object) const;
198
199 Document::Ptr parseJsonAndGetDocument(const boost::property_tree::ptree& data) const;
200 std::string parseDocument(const Document::Ptr& object) const;
201
202 Video::Ptr parseJsonAndGetVideo(const boost::property_tree::ptree& data) const;
203 std::string parseVideo(const Video::Ptr& object) const;
204
205 VideoNote::Ptr parseJsonAndGetVideoNote(const boost::property_tree::ptree& data) const;
206 std::string parseVideoNote(const VideoNote::Ptr& object) const;
207
208 Voice::Ptr parseJsonAndGetVoice(const boost::property_tree::ptree& data) const;
209 std::string parseVoice(const Voice::Ptr& object) const;
210
211 Contact::Ptr parseJsonAndGetContact(const boost::property_tree::ptree& data) const;
212 std::string parseContact(const Contact::Ptr& object) const;
213
214 Dice::Ptr parseJsonAndGetDice(const boost::property_tree::ptree& data) const;
215 std::string parseDice(const Dice::Ptr& object) const;
216
217 PollOption::Ptr parseJsonAndGetPollOption(const boost::property_tree::ptree& data) const;
218 std::string parsePollOption(const PollOption::Ptr& object) const;
219
220 PollAnswer::Ptr parseJsonAndGetPollAnswer(const boost::property_tree::ptree& data) const;
221 std::string parsePollAnswer(const PollAnswer::Ptr& object) const;
222
223 Poll::Ptr parseJsonAndGetPoll(const boost::property_tree::ptree& data) const;
224 std::string parsePoll(const Poll::Ptr& object) const;
225
226 Location::Ptr parseJsonAndGetLocation(const boost::property_tree::ptree& data) const;
227 std::string parseLocation(const Location::Ptr& object) const;
228
229 Venue::Ptr parseJsonAndGetVenue(const boost::property_tree::ptree& data) const;
230 std::string parseVenue(const Venue::Ptr& object) const;
231
232 WebAppData::Ptr parseJsonAndGetWebAppData(const boost::property_tree::ptree& data) const;
233 std::string parseWebAppData(const WebAppData::Ptr& object) const;
234
235 ProximityAlertTriggered::Ptr parseJsonAndGetProximityAlertTriggered(const boost::property_tree::ptree& data) const;
236 std::string parseProximityAlertTriggered(const ProximityAlertTriggered::Ptr& object) const;
237
238 MessageAutoDeleteTimerChanged::Ptr parseJsonAndGetMessageAutoDeleteTimerChanged(const boost::property_tree::ptree& data) const;
239 std::string parseMessageAutoDeleteTimerChanged(const MessageAutoDeleteTimerChanged::Ptr& object) const;
240
241 ForumTopicCreated::Ptr parseJsonAndGetForumTopicCreated(const boost::property_tree::ptree& data) const;
242 std::string parseForumTopicCreated(const ForumTopicCreated::Ptr& object) const;
243
244 ForumTopicClosed::Ptr parseJsonAndGetForumTopicClosed(const boost::property_tree::ptree& data) const;
245 std::string parseForumTopicClosed(const ForumTopicClosed::Ptr& object) const;
246
247 ForumTopicEdited::Ptr parseJsonAndGetForumTopicEdited(const boost::property_tree::ptree& data) const;
248 std::string parseForumTopicEdited(const ForumTopicEdited::Ptr& object) const;
249
250 ForumTopicReopened::Ptr parseJsonAndGetForumTopicReopened(const boost::property_tree::ptree& data) const;
251 std::string parseForumTopicReopened(const ForumTopicReopened::Ptr& object) const;
252
253 GeneralForumTopicHidden::Ptr parseJsonAndGetGeneralForumTopicHidden(const boost::property_tree::ptree& data) const;
254 std::string parseGeneralForumTopicHidden(const GeneralForumTopicHidden::Ptr& object) const;
255
256 GeneralForumTopicUnhidden::Ptr parseJsonAndGetGeneralForumTopicUnhidden(const boost::property_tree::ptree& data) const;
257 std::string parseGeneralForumTopicUnhidden(const GeneralForumTopicUnhidden::Ptr& object) const;
258
259 UserShared::Ptr parseJsonAndGetUserShared(const boost::property_tree::ptree& data) const;
260 std::string parseUserShared(const UserShared::Ptr& object) const;
261
262 ChatShared::Ptr parseJsonAndGetChatShared(const boost::property_tree::ptree& data) const;
263 std::string parseChatShared(const ChatShared::Ptr& object) const;
264
265 WriteAccessAllowed::Ptr parseJsonAndGetWriteAccessAllowed(const boost::property_tree::ptree& data) const;
266 std::string parseWriteAccessAllowed(const WriteAccessAllowed::Ptr& object) const;
267
268 VideoChatScheduled::Ptr parseJsonAndGetVideoChatScheduled(const boost::property_tree::ptree& data) const;
269 std::string parseVideoChatScheduled(const VideoChatScheduled::Ptr& object) const;
270
271 VideoChatStarted::Ptr parseJsonAndGetVideoChatStarted(const boost::property_tree::ptree& data) const;
272 std::string parseVideoChatStarted(const VideoChatStarted::Ptr& object) const;
273
274 VideoChatEnded::Ptr parseJsonAndGetVideoChatEnded(const boost::property_tree::ptree& data) const;
275 std::string parseVideoChatEnded(const VideoChatEnded::Ptr& object) const;
276
277 VideoChatParticipantsInvited::Ptr parseJsonAndGetVideoChatParticipantsInvited(const boost::property_tree::ptree& data) const;
278 std::string parseVideoChatParticipantsInvited(const VideoChatParticipantsInvited::Ptr& object) const;
279
280 UserProfilePhotos::Ptr parseJsonAndGetUserProfilePhotos(const boost::property_tree::ptree& data) const;
281 std::string parseUserProfilePhotos(const UserProfilePhotos::Ptr& object) const;
282
283 File::Ptr parseJsonAndGetFile(const boost::property_tree::ptree& data) const;
284 std::string parseFile(const File::Ptr& object) const;
285
286 WebAppInfo::Ptr parseJsonAndGetWebAppInfo(const boost::property_tree::ptree& data) const;
287 std::string parseWebAppInfo(const WebAppInfo::Ptr& object) const;
288
289 ReplyKeyboardMarkup::Ptr parseJsonAndGetReplyKeyboardMarkup(const boost::property_tree::ptree& data) const;
290 std::string parseReplyKeyboardMarkup(const ReplyKeyboardMarkup::Ptr& object) const;
291
292 KeyboardButton::Ptr parseJsonAndGetKeyboardButton(const boost::property_tree::ptree& data) const;
293 std::string parseKeyboardButton(const KeyboardButton::Ptr& object) const;
294
295 KeyboardButtonRequestUser::Ptr parseJsonAndGetKeyboardButtonRequestUser(const boost::property_tree::ptree& data) const;
296 std::string parseKeyboardButtonRequestUser(const KeyboardButtonRequestUser::Ptr& object) const;
297
298 KeyboardButtonRequestChat::Ptr parseJsonAndGetKeyboardButtonRequestChat(const boost::property_tree::ptree& data) const;
299 std::string parseKeyboardButtonRequestChat(const KeyboardButtonRequestChat::Ptr& object) const;
300
301 KeyboardButtonPollType::Ptr parseJsonAndGetKeyboardButtonPollType(const boost::property_tree::ptree& data) const;
302 std::string parseKeyboardButtonPollType(const KeyboardButtonPollType::Ptr& object) const;
303
304 ReplyKeyboardRemove::Ptr parseJsonAndGetReplyKeyboardRemove(const boost::property_tree::ptree& data) const;
305 std::string parseReplyKeyboardRemove(const ReplyKeyboardRemove::Ptr& object) const;
306
307 InlineKeyboardMarkup::Ptr parseJsonAndGetInlineKeyboardMarkup(const boost::property_tree::ptree& data) const;
308 std::string parseInlineKeyboardMarkup(const InlineKeyboardMarkup::Ptr& object) const;
309
310 InlineKeyboardButton::Ptr parseJsonAndGetInlineKeyboardButton(const boost::property_tree::ptree& data) const;
311 std::string parseInlineKeyboardButton(const InlineKeyboardButton::Ptr& object) const;
312
313 LoginUrl::Ptr parseJsonAndGetLoginUrl(const boost::property_tree::ptree& data) const;
314 std::string parseLoginUrl(const LoginUrl::Ptr& object) const;
315
316 CallbackQuery::Ptr parseJsonAndGetCallbackQuery(const boost::property_tree::ptree& data) const;
317 std::string parseCallbackQuery(const CallbackQuery::Ptr& object) const;
318
319 ForceReply::Ptr parseJsonAndGetForceReply(const boost::property_tree::ptree& data) const;
320 std::string parseForceReply(const ForceReply::Ptr& object) const;
321
322 ChatPhoto::Ptr parseJsonAndGetChatPhoto(const boost::property_tree::ptree& data) const;
323 std::string parseChatPhoto(const ChatPhoto::Ptr& object) const;
324
325 ChatInviteLink::Ptr parseJsonAndGetChatInviteLink(const boost::property_tree::ptree& data) const;
326 std::string parseChatInviteLink(const ChatInviteLink::Ptr& object) const;
327
328 ChatAdministratorRights::Ptr parseJsonAndGetChatAdministratorRights(const boost::property_tree::ptree& data) const;
329 std::string parseChatAdministratorRights(const ChatAdministratorRights::Ptr& object) const;
330
331 ChatMember::Ptr parseJsonAndGetChatMember(const boost::property_tree::ptree& data) const;
332 std::string parseChatMember(const ChatMember::Ptr& object) const;
333
334 ChatMemberOwner::Ptr parseJsonAndGetChatMemberOwner(const boost::property_tree::ptree& data) const;
335 std::string parseChatMemberOwner(const ChatMemberOwner::Ptr& object) const;
336
337 ChatMemberAdministrator::Ptr parseJsonAndGetChatMemberAdministrator(const boost::property_tree::ptree& data) const;
338 std::string parseChatMemberAdministrator(const ChatMemberAdministrator::Ptr& object) const;
339
340 ChatMemberMember::Ptr parseJsonAndGetChatMemberMember(const boost::property_tree::ptree& data) const;
341 std::string parseChatMemberMember(const ChatMemberMember::Ptr& object) const;
342
343 ChatMemberRestricted::Ptr parseJsonAndGetChatMemberRestricted(const boost::property_tree::ptree& data) const;
344 std::string parseChatMemberRestricted(const ChatMemberRestricted::Ptr& object) const;
345
346 ChatMemberLeft::Ptr parseJsonAndGetChatMemberLeft(const boost::property_tree::ptree& data) const;
347 std::string parseChatMemberLeft(const ChatMemberLeft::Ptr& object) const;
348
349 ChatMemberBanned::Ptr parseJsonAndGetChatMemberBanned(const boost::property_tree::ptree& data) const;
350 std::string parseChatMemberBanned(const ChatMemberBanned::Ptr& object) const;
351
352 ChatMemberUpdated::Ptr parseJsonAndGetChatMemberUpdated(const boost::property_tree::ptree& data) const;
353 std::string parseChatMemberUpdated(const ChatMemberUpdated::Ptr& object) const;
354
355 ChatJoinRequest::Ptr parseJsonAndGetChatJoinRequest(const boost::property_tree::ptree& data) const;
356 std::string parseChatJoinRequest(const ChatJoinRequest::Ptr& object) const;
357
358 ChatPermissions::Ptr parseJsonAndGetChatPermissions(const boost::property_tree::ptree& data) const;
359 std::string parseChatPermissions(const ChatPermissions::Ptr& object) const;
360
361 ChatLocation::Ptr parseJsonAndGetChatLocation(const boost::property_tree::ptree& data) const;
362 std::string parseChatLocation(const ChatLocation::Ptr& object) const;
363
364 ForumTopic::Ptr parseJsonAndGetForumTopic(const boost::property_tree::ptree& data) const;
365 std::string parseForumTopic(const ForumTopic::Ptr& object) const;
366
367 BotCommand::Ptr parseJsonAndGetBotCommand(const boost::property_tree::ptree& data) const;
368 std::string parseBotCommand(const BotCommand::Ptr& object) const;
369
370 BotCommandScope::Ptr parseJsonAndGetBotCommandScope(const boost::property_tree::ptree& data) const;
371 std::string parseBotCommandScope(const BotCommandScope::Ptr& object) const;
372
373 BotCommandScopeDefault::Ptr parseJsonAndGetBotCommandScopeDefault(const boost::property_tree::ptree& data) const;
374 std::string parseBotCommandScopeDefault(const BotCommandScopeDefault::Ptr& object) const;
375
376 BotCommandScopeAllPrivateChats::Ptr parseJsonAndGetBotCommandScopeAllPrivateChats(const boost::property_tree::ptree& data) const;
377 std::string parseBotCommandScopeAllPrivateChats(const BotCommandScopeAllPrivateChats::Ptr& object) const;
378
379 BotCommandScopeAllGroupChats::Ptr parseJsonAndGetBotCommandScopeAllGroupChats(const boost::property_tree::ptree& data) const;
380 std::string parseBotCommandScopeAllGroupChats(const BotCommandScopeAllGroupChats::Ptr& object) const;
381
382 BotCommandScopeAllChatAdministrators::Ptr parseJsonAndGetBotCommandScopeAllChatAdministrators(const boost::property_tree::ptree& data) const;
383 std::string parseBotCommandScopeAllChatAdministrators(const BotCommandScopeAllChatAdministrators::Ptr& object) const;
384
385 BotCommandScopeChat::Ptr parseJsonAndGetBotCommandScopeChat(const boost::property_tree::ptree& data) const;
386 std::string parseBotCommandScopeChat(const BotCommandScopeChat::Ptr& object) const;
387
388 BotCommandScopeChatAdministrators::Ptr parseJsonAndGetBotCommandScopeChatAdministrators(const boost::property_tree::ptree& data) const;
389 std::string parseBotCommandScopeChatAdministrators(const BotCommandScopeChatAdministrators::Ptr& object) const;
390
391 BotCommandScopeChatMember::Ptr parseJsonAndGetBotCommandScopeChatMember(const boost::property_tree::ptree& data) const;
392 std::string parseBotCommandScopeChatMember(const BotCommandScopeChatMember::Ptr& object) const;
393
394 MenuButton::Ptr parseJsonAndGetMenuButton(const boost::property_tree::ptree& data) const;
395 std::string parseMenuButton(const MenuButton::Ptr& object) const;
396
397 MenuButtonCommands::Ptr parseJsonAndGetMenuButtonCommands(const boost::property_tree::ptree& data) const;
398 std::string parseMenuButtonCommands(const MenuButtonCommands::Ptr& object) const;
399
400 MenuButtonWebApp::Ptr parseJsonAndGetMenuButtonWebApp(const boost::property_tree::ptree& data) const;
401 std::string parseMenuButtonWebApp(const MenuButtonWebApp::Ptr& object) const;
402
403 MenuButtonDefault::Ptr parseJsonAndGetMenuButtonDefault(const boost::property_tree::ptree& data) const;
404 std::string parseMenuButtonDefault(const MenuButtonDefault::Ptr& object) const;
405
406 ResponseParameters::Ptr parseJsonAndGetResponseParameters(const boost::property_tree::ptree& data) const;
407 std::string parseResponseParameters(const ResponseParameters::Ptr& object) const;
408
409 InputMedia::Ptr parseJsonAndGetInputMedia(const boost::property_tree::ptree& data) const;
410 std::string parseInputMedia(const InputMedia::Ptr& object) const;
411
412 InputMediaPhoto::Ptr parseJsonAndGetInputMediaPhoto(const boost::property_tree::ptree& data) const;
413 std::string parseInputMediaPhoto(const InputMediaPhoto::Ptr& object) const;
414
415 InputMediaVideo::Ptr parseJsonAndGetInputMediaVideo(const boost::property_tree::ptree& data) const;
416 std::string parseInputMediaVideo(const InputMediaVideo::Ptr& object) const;
417
418 InputMediaAnimation::Ptr parseJsonAndGetInputMediaAnimation(const boost::property_tree::ptree& data) const;
419 std::string parseInputMediaAnimation(const InputMediaAnimation::Ptr& object) const;
420
421 InputMediaAudio::Ptr parseJsonAndGetInputMediaAudio(const boost::property_tree::ptree& data) const;
422 std::string parseInputMediaAudio(const InputMediaAudio::Ptr& object) const;
423
424 InputMediaDocument::Ptr parseJsonAndGetInputMediaDocument(const boost::property_tree::ptree& data) const;
425 std::string parseInputMediaDocument(const InputMediaDocument::Ptr& object) const;
426
427 Sticker::Ptr parseJsonAndGetSticker(const boost::property_tree::ptree& data) const;
428 std::string parseSticker(const Sticker::Ptr& object) const;
429
430 StickerSet::Ptr parseJsonAndGetStickerSet(const boost::property_tree::ptree& data) const;
431 std::string parseStickerSet(const StickerSet::Ptr& object) const;
432
433 MaskPosition::Ptr parseJsonAndGetMaskPosition(const boost::property_tree::ptree& data) const;
434 std::string parseMaskPosition(const MaskPosition::Ptr& object) const;
435
436 InlineQuery::Ptr parseJsonAndGetInlineQuery(const boost::property_tree::ptree& data) const;
437 std::string parseInlineQuery(const InlineQuery::Ptr& object) const;
438
439 InlineQueryResult::Ptr parseJsonAndGetInlineQueryResult(const boost::property_tree::ptree& data) const;
440 std::string parseInlineQueryResult(const InlineQueryResult::Ptr& object) const;
441
442 InlineQueryResultArticle::Ptr parseJsonAndGetInlineQueryResultArticle(const boost::property_tree::ptree& data) const;
443 std::string parseInlineQueryResultArticle(const InlineQueryResultArticle::Ptr& object) const;
444
445 InlineQueryResultPhoto::Ptr parseJsonAndGetInlineQueryResultPhoto(const boost::property_tree::ptree& data) const;
446 std::string parseInlineQueryResultPhoto(const InlineQueryResultPhoto::Ptr& object) const;
447
448 InlineQueryResultGif::Ptr parseJsonAndGetInlineQueryResultGif(const boost::property_tree::ptree& data) const;
449 std::string parseInlineQueryResultGif(const InlineQueryResultGif::Ptr& object) const;
450
451 InlineQueryResultMpeg4Gif::Ptr parseJsonAndGetInlineQueryResultMpeg4Gif(const boost::property_tree::ptree& data) const;
452 std::string parseInlineQueryResultMpeg4Gif(const InlineQueryResultMpeg4Gif::Ptr& object) const;
453
454 InlineQueryResultVideo::Ptr parseJsonAndGetInlineQueryResultVideo(const boost::property_tree::ptree& data) const;
455 std::string parseInlineQueryResultVideo(const InlineQueryResultVideo::Ptr& object) const;
456
457 InlineQueryResultAudio::Ptr parseJsonAndGetInlineQueryResultAudio(const boost::property_tree::ptree& data) const;
458 std::string parseInlineQueryResultAudio(const InlineQueryResultAudio::Ptr& object) const;
459
460 InlineQueryResultVoice::Ptr parseJsonAndGetInlineQueryResultVoice(const boost::property_tree::ptree& data) const;
461 std::string parseInlineQueryResultVoice(const InlineQueryResultVoice::Ptr& object) const;
462
463 InlineQueryResultDocument::Ptr parseJsonAndGetInlineQueryResultDocument(const boost::property_tree::ptree& data) const;
464 std::string parseInlineQueryResultDocument(const InlineQueryResultDocument::Ptr& object) const;
465
466 InlineQueryResultLocation::Ptr parseJsonAndGetInlineQueryResultLocation(const boost::property_tree::ptree& data) const;
467 std::string parseInlineQueryResultLocation(const InlineQueryResultLocation::Ptr& object) const;
468
469 InlineQueryResultVenue::Ptr parseJsonAndGetInlineQueryResultVenue(const boost::property_tree::ptree& data) const;
470 std::string parseInlineQueryResultVenue(const InlineQueryResultVenue::Ptr& object) const;
471
472 InlineQueryResultContact::Ptr parseJsonAndGetInlineQueryResultContact(const boost::property_tree::ptree& data) const;
473 std::string parseInlineQueryResultContact(const InlineQueryResultContact::Ptr& object) const;
474
475 InlineQueryResultGame::Ptr parseJsonAndGetInlineQueryResultGame(const boost::property_tree::ptree& data) const;
476 std::string parseInlineQueryResultGame(const InlineQueryResultGame::Ptr& object) const;
477
478 InlineQueryResultCachedPhoto::Ptr parseJsonAndGetInlineQueryResultCachedPhoto(const boost::property_tree::ptree& data) const;
479 std::string parseInlineQueryResultCachedPhoto(const InlineQueryResultCachedPhoto::Ptr& object) const;
480
481 InlineQueryResultCachedGif::Ptr parseJsonAndGetInlineQueryResultCachedGif(const boost::property_tree::ptree& data) const;
482 std::string parseInlineQueryResultCachedGif(const InlineQueryResultCachedGif::Ptr& object) const;
483
484 InlineQueryResultCachedMpeg4Gif::Ptr parseJsonAndGetInlineQueryResultCachedMpeg4Gif(const boost::property_tree::ptree& data) const;
485 std::string parseInlineQueryResultCachedMpeg4Gif(const InlineQueryResultCachedMpeg4Gif::Ptr& object) const;
486
487 InlineQueryResultCachedSticker::Ptr parseJsonAndGetInlineQueryResultCachedSticker(const boost::property_tree::ptree& data) const;
488 std::string parseInlineQueryResultCachedSticker(const InlineQueryResultCachedSticker::Ptr& object) const;
489
490 InlineQueryResultCachedDocument::Ptr parseJsonAndGetInlineQueryResultCachedDocument(const boost::property_tree::ptree& data) const;
491 std::string parseInlineQueryResultCachedDocument(const InlineQueryResultCachedDocument::Ptr& object) const;
492
493 InlineQueryResultCachedVideo::Ptr parseJsonAndGetInlineQueryResultCachedVideo(const boost::property_tree::ptree& data) const;
494 std::string parseInlineQueryResultCachedVideo(const InlineQueryResultCachedVideo::Ptr& object) const;
495
496 InlineQueryResultCachedVoice::Ptr parseJsonAndGetInlineQueryResultCachedVoice(const boost::property_tree::ptree& data) const;
497 std::string parseInlineQueryResultCachedVoice(const InlineQueryResultCachedVoice::Ptr& object) const;
498
499 InlineQueryResultCachedAudio::Ptr parseJsonAndGetInlineQueryResultCachedAudio(const boost::property_tree::ptree& data) const;
500 std::string parseInlineQueryResultCachedAudio(const InlineQueryResultCachedAudio::Ptr& object) const;
501
502 InputMessageContent::Ptr parseJsonAndGetInputMessageContent(const boost::property_tree::ptree& data) const;
503 std::string parseInputMessageContent(const InputMessageContent::Ptr& object) const;
504
505 InputTextMessageContent::Ptr parseJsonAndGetInputTextMessageContent(const boost::property_tree::ptree& data) const;
506 std::string parseInputTextMessageContent(const InputTextMessageContent::Ptr& object) const;
507
508 InputLocationMessageContent::Ptr parseJsonAndGetInputLocationMessageContent(const boost::property_tree::ptree& data) const;
509 std::string parseInputLocationMessageContent(const InputLocationMessageContent::Ptr& object) const;
510
511 InputVenueMessageContent::Ptr parseJsonAndGetInputVenueMessageContent(const boost::property_tree::ptree& data) const;
512 std::string parseInputVenueMessageContent(const InputVenueMessageContent::Ptr& object) const;
513
514 InputContactMessageContent::Ptr parseJsonAndGetInputContactMessageContent(const boost::property_tree::ptree& data) const;
515 std::string parseInputContactMessageContent(const InputContactMessageContent::Ptr& object) const;
516
517 InputInvoiceMessageContent::Ptr parseJsonAndGetInputInvoiceMessageContent(const boost::property_tree::ptree& data) const;
518 std::string parseInputInvoiceMessageContent(const InputInvoiceMessageContent::Ptr& object) const;
519
520 ChosenInlineResult::Ptr parseJsonAndGetChosenInlineResult(const boost::property_tree::ptree& data) const;
521 std::string parseChosenInlineResult(const ChosenInlineResult::Ptr& object) const;
522
523 SentWebAppMessage::Ptr parseJsonAndGetSentWebAppMessage(const boost::property_tree::ptree& data) const;
524 std::string parseSentWebAppMessage(const SentWebAppMessage::Ptr& object) const;
525
526 LabeledPrice::Ptr parseJsonAndGetLabeledPrice(const boost::property_tree::ptree& data) const;
527 std::string parseLabeledPrice(const LabeledPrice::Ptr& object) const;
528
529 Invoice::Ptr parseJsonAndGetInvoice(const boost::property_tree::ptree& data) const;
530 std::string parseInvoice(const Invoice::Ptr& object) const;
531
532 ShippingAddress::Ptr parseJsonAndGetShippingAddress(const boost::property_tree::ptree& data) const;
533 std::string parseShippingAddress(const ShippingAddress::Ptr& object) const;
534
535 OrderInfo::Ptr parseJsonAndGetOrderInfo(const boost::property_tree::ptree& data) const;
536 std::string parseOrderInfo(const OrderInfo::Ptr& object) const;
537
538 ShippingOption::Ptr parseJsonAndGetShippingOption(const boost::property_tree::ptree& data) const;
539 std::string parseShippingOption(const ShippingOption::Ptr& object) const;
540
541 SuccessfulPayment::Ptr parseJsonAndGetSuccessfulPayment(const boost::property_tree::ptree& data) const;
542 std::string parseSuccessfulPayment(const SuccessfulPayment::Ptr& object) const;
543
544 ShippingQuery::Ptr parseJsonAndGetShippingQuery(const boost::property_tree::ptree& data) const;
545 std::string parseShippingQuery(const ShippingQuery::Ptr& object) const;
546
547 PreCheckoutQuery::Ptr parseJsonAndGetPreCheckoutQuery(const boost::property_tree::ptree& data) const;
548 std::string parsePreCheckoutQuery(const PreCheckoutQuery::Ptr& object) const;
549
550 PassportData::Ptr parseJsonAndGetPassportData(const boost::property_tree::ptree& data) const;
551 std::string parsePassportData(const PassportData::Ptr& object) const;
552
553 PassportFile::Ptr parseJsonAndGetPassportFile(const boost::property_tree::ptree& data) const;
554 std::string parsePassportFile(const PassportFile::Ptr& object) const;
555
556 EncryptedPassportElement::Ptr parseJsonAndGetEncryptedPassportElement(const boost::property_tree::ptree& data) const;
557 std::string parseEncryptedPassportElement(const EncryptedPassportElement::Ptr& object) const;
558
559 EncryptedCredentials::Ptr parseJsonAndGetEncryptedCredentials(const boost::property_tree::ptree& data) const;
560 std::string parseEncryptedCredentials(const EncryptedCredentials::Ptr& object) const;
561
562 PassportElementError::Ptr parseJsonAndGetPassportElementError(const boost::property_tree::ptree& data) const;
563 std::string parsePassportElementError(const PassportElementError::Ptr& object) const;
564
565 PassportElementErrorDataField::Ptr parseJsonAndGetPassportElementErrorDataField(const boost::property_tree::ptree& data) const;
566 std::string parsePassportElementErrorDataField(const PassportElementErrorDataField::Ptr& object) const;
567
568 PassportElementErrorFrontSide::Ptr parseJsonAndGetPassportElementErrorFrontSide(const boost::property_tree::ptree& data) const;
569 std::string parsePassportElementErrorFrontSide(const PassportElementErrorFrontSide::Ptr& object) const;
570
571 PassportElementErrorReverseSide::Ptr parseJsonAndGetPassportElementErrorReverseSide(const boost::property_tree::ptree& data) const;
572 std::string parsePassportElementErrorReverseSide(const PassportElementErrorReverseSide::Ptr& object) const;
573
574 PassportElementErrorSelfie::Ptr parseJsonAndGetPassportElementErrorSelfie(const boost::property_tree::ptree& data) const;
575 std::string parsePassportElementErrorSelfie(const PassportElementErrorSelfie::Ptr& object) const;
576
577 PassportElementErrorFile::Ptr parseJsonAndGetPassportElementErrorFile(const boost::property_tree::ptree& data) const;
578 std::string parsePassportElementErrorFile(const PassportElementErrorFile::Ptr& object) const;
579
580 PassportElementErrorFiles::Ptr parseJsonAndGetPassportElementErrorFiles(const boost::property_tree::ptree& data) const;
581 std::string parsePassportElementErrorFiles(const PassportElementErrorFiles::Ptr& object) const;
582
583 PassportElementErrorTranslationFile::Ptr parseJsonAndGetPassportElementErrorTranslationFile(const boost::property_tree::ptree& data) const;
584 std::string parsePassportElementErrorTranslationFile(const PassportElementErrorTranslationFile::Ptr& object) const;
585
586 PassportElementErrorTranslationFiles::Ptr parseJsonAndGetPassportElementErrorTranslationFiles(const boost::property_tree::ptree& data) const;
587 std::string parsePassportElementErrorTranslationFiles(const PassportElementErrorTranslationFiles::Ptr& object) const;
588
589 PassportElementErrorUnspecified::Ptr parseJsonAndGetPassportElementErrorUnspecified(const boost::property_tree::ptree& data) const;
590 std::string parsePassportElementErrorUnspecified(const PassportElementErrorUnspecified::Ptr& object) const;
591
592 Game::Ptr parseJsonAndGetGame(const boost::property_tree::ptree& data) const;
593 std::string parseGame(const Game::Ptr& object) const;
594
595 CallbackGame::Ptr parseJsonAndGetCallbackGame(const boost::property_tree::ptree& data) const;
596 std::string parseCallbackGame(const CallbackGame::Ptr& object) const;
597
598 GameHighScore::Ptr parseJsonAndGetGameHighScore(const boost::property_tree::ptree& data) const;
599 std::string parseGameHighScore(const GameHighScore::Ptr& object) const;
600
601 GenericReply::Ptr parseJsonAndGetGenericReply(const boost::property_tree::ptree& data) const;
602 std::string parseGenericReply(const GenericReply::Ptr& object) const;
603
604 inline boost::property_tree::ptree parseJson(const std::string& json) const {
605 boost::property_tree::ptree tree;
606 std::istringstream input(json);
607 boost::property_tree::read_json(input, tree);
608 return tree;
609 }
610
611 template<typename T>
612 std::shared_ptr<T> tryParseJson(JsonToTgTypeFunc<T> parseFunc, const boost::property_tree::ptree& data, const std::string& keyName) const {
613 auto treeItem = data.find(keyName);
614 if (treeItem == data.not_found()) {
615 return std::shared_ptr<T>();
616 }
617 return (this->*parseFunc)(treeItem->second);
618 }
619
620 template<typename T>
621 std::vector<std::shared_ptr<T>> parseJsonAndGetArray(JsonToTgTypeFunc<T> parseFunc, const boost::property_tree::ptree& data) const {
622 std::vector<std::shared_ptr<T>> result;
623 result.reserve(data.size());
624 for (const std::pair<const std::string, boost::property_tree::ptree>& innerTreeItem : data) {
625 result.push_back((this->*parseFunc)(innerTreeItem.second));
626 }
627 return result;
628 }
629
630 template<typename T>
631 std::vector<T> parseJsonAndGetArray(std::function<T(const boost::property_tree::ptree&)> parseFunc, const boost::property_tree::ptree& data, const std::string& keyName) const {
632 std::vector<T> result;
633 auto treeItem = data.find(keyName);
634 if (treeItem == data.not_found()) {
635 return result;
636 }
637 result.reserve(treeItem->second.size());
638 for (const std::pair<const std::string, boost::property_tree::ptree>& innerTreeItem : treeItem->second) {
639 result.push_back(parseFunc(innerTreeItem.second));
640 }
641 return result;
642 }
643
644 template<typename T>
645 std::vector<std::shared_ptr<T>> parseJsonAndGetArray(JsonToTgTypeFunc<T> parseFunc, const boost::property_tree::ptree& data, const std::string& keyName) const {
646 std::vector<std::shared_ptr<T>> result;
647 auto treeItem = data.find(keyName);
648 if (treeItem == data.not_found()) {
649 return result;
650 }
651 result.reserve(treeItem->second.size());
652 for (const std::pair<const std::string, boost::property_tree::ptree>& innerTreeItem : treeItem->second) {
653 result.push_back((this->*parseFunc)(innerTreeItem.second));
654 }
655 return result;
656 }
657
658 template<typename T>
659 std::vector<std::vector<std::shared_ptr<T>>> parseJsonAndGet2DArray(JsonToTgTypeFunc<T> parseFunc, const boost::property_tree::ptree& data, const std::string& keyName) const {
660 std::vector<std::vector<std::shared_ptr<T>>> result;
661 auto treeItem = data.find(keyName);
662 if (treeItem == data.not_found()) {
663 return result;
664 }
665 result.reserve(treeItem->second.size());
666 for (const std::pair<const std::string, boost::property_tree::ptree>& innerTreeItem : treeItem->second) {
667 std::vector<std::shared_ptr<T>> innerResult;
668 for (const std::pair<const std::string, boost::property_tree::ptree>& innerInnerTreeItem : innerTreeItem.second) {
669 innerResult.push_back((this->*parseFunc)(innerInnerTreeItem.second));
670 }
671 result.push_back(innerResult);
672 }
673 return result;
674 }
675
676 template<typename T>
677 std::string parseArray(TgTypeToJsonFunc<T> parseFunc, const std::vector<std::shared_ptr<T>>& objects) const {
678 if (objects.empty())
679 return "";
680 std::string result;
681 result += '[';
682 for (const std::shared_ptr<T>& item : objects) {
683 result += (this->*parseFunc)(item);
684 result += ',';
685 }
686 result.erase(result.length() - 1);
687 result += ']';
688 return result;
689 }
690
691 template<typename T>
692 std::string parseArray(std::function<T(const T&)> parseFunc, const std::vector<T>& objects) const {
693 if (objects.empty())
694 return "";
695 std::string result;
696 result += '[';
697 for (const T& item : objects) {
698 result += parseFunc(item);
699 result += ',';
700 }
701 result.erase(result.length() - 1);
702 result += ']';
703 return result;
704 }
705
706 template<typename T>
707 std::string parse2DArray(TgTypeToJsonFunc<T> parseFunc, const std::vector<std::vector<std::shared_ptr<T>>>& objects) const {
708 if (objects.empty())
709 return "";
710 std::string result;
711 result += '[';
712 for (const std::vector<std::shared_ptr<T>>& item : objects) {
713 result += parseArray(parseFunc, item);
714 result += ',';
715 }
716 result.erase(result.length() - 1);
717 result += ']';
718 return result;
719 }
720
721private:
722 inline void removeLastComma(std::string& input) const {
723 input.erase(input.length() - 1);
724 }
725
726 template<typename T>
727 inline void appendToJson(std::string& json, const std::string& varName, const std::shared_ptr<T>& value) const {
728 if (value == nullptr) {
729 return;
730 }
731 json += '"';
732 json += varName;
733 json += R"(":)";
734 json += value;
735 json += ',';
736 }
737
738 template<typename T>
739 inline void appendToJson(std::string& json, const std::string& varName, const T& value) const {
740 json += '"';
741 json += varName;
742 json += R"(":)";
743 json += value;
744 json += ',';
745 }
746
747 template<typename T>
748 inline void appendToJsonNumber(std::string& json, const std::string& varName, const T& value) const {
749 json += '"';
750 json += varName;
751 json += R"(":)";
752 json += std::to_string(value);
753 json += ',';
754 }
755
756 inline void appendToJson(std::string &json, const std::string &varName, const int &value) const { appendToJsonNumber(json, varName, value); }
757 inline void appendToJson(std::string &json, const std::string &varName, const long &value) const { appendToJsonNumber(json, varName, value); }
758 inline void appendToJson(std::string &json, const std::string &varName, const long long &value) const { appendToJsonNumber(json, varName, value); }
759 inline void appendToJson(std::string &json, const std::string &varName, const unsigned &value) const { appendToJsonNumber(json, varName, value); }
760 inline void appendToJson(std::string &json, const std::string &varName, const unsigned long &value) const { appendToJsonNumber(json, varName, value); }
761 inline void appendToJson(std::string &json, const std::string &varName, const unsigned long long &value) const { appendToJsonNumber(json, varName, value); }
762 inline void appendToJson(std::string &json, const std::string &varName, const float &value) const { appendToJsonNumber(json, varName, value); }
763 inline void appendToJson(std::string &json, const std::string &varName, const double &value) const { appendToJsonNumber(json, varName, value); }
764 inline void appendToJson(std::string &json, const std::string &varName, const long double &value) const { appendToJsonNumber(json, varName, value); }
765
766 inline void appendToJson(std::string& json, const std::string& varName, const bool& value) const {
767 json += '"';
768 json += varName;
769 json += R"(":)";
770 json += (value ? "true" : "false");
771 json += ',';
772 }
773
774 inline void appendToJson(std::string& json, const std::string& varName, const char* value) const {
775 if (value != nullptr){
776 std::string strValue(value);
777 appendToJson(json, varName, strValue);
778 }
779 }
780
781 void appendToJson(std::string& json, const std::string& varName, const std::string& value) const;
782};
783}
784
785#endif //TGBOT_TGTYPEPARSER_H
Definition Api.h:39