tdlib-ruby 1.0.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.gitmodules +3 -0
- data/.travis.yml +2 -3
- data/ChangeLog.md +9 -0
- data/README.md +49 -46
- data/bin/build +12 -0
- data/bin/parser +447 -0
- data/lib/tdlib-ruby.rb +4 -1
- data/lib/tdlib/api.rb +20 -15
- data/lib/tdlib/client.rb +121 -123
- data/lib/tdlib/client_methods.rb +3474 -0
- data/lib/tdlib/errors.rb +29 -5
- data/lib/tdlib/types.rb +884 -0
- data/lib/tdlib/types/account_ttl.rb +10 -0
- data/lib/tdlib/types/address.rb +18 -0
- data/lib/tdlib/types/animation.rb +21 -0
- data/lib/tdlib/types/animations.rb +8 -0
- data/lib/tdlib/types/audio.rb +22 -0
- data/lib/tdlib/types/authentication_code_info.rb +15 -0
- data/lib/tdlib/types/authentication_code_type.rb +13 -0
- data/lib/tdlib/types/authentication_code_type/call.rb +8 -0
- data/lib/tdlib/types/authentication_code_type/flash_call.rb +9 -0
- data/lib/tdlib/types/authentication_code_type/sms.rb +8 -0
- data/lib/tdlib/types/authentication_code_type/telegram_message.rb +8 -0
- data/lib/tdlib/types/authorization_state.rb +18 -0
- data/lib/tdlib/types/authorization_state/closed.rb +9 -0
- data/lib/tdlib/types/authorization_state/closing.rb +7 -0
- data/lib/tdlib/types/authorization_state/logging_out.rb +5 -0
- data/lib/tdlib/types/authorization_state/ready.rb +6 -0
- data/lib/tdlib/types/authorization_state/wait_code.rb +13 -0
- data/lib/tdlib/types/authorization_state/wait_encryption_key.rb +8 -0
- data/lib/tdlib/types/authorization_state/wait_password.rb +13 -0
- data/lib/tdlib/types/authorization_state/wait_phone_number.rb +5 -0
- data/lib/tdlib/types/authorization_state/wait_tdlib_parameters.rb +5 -0
- data/lib/tdlib/types/base.rb +29 -0
- data/lib/tdlib/types/basic_group.rb +18 -0
- data/lib/tdlib/types/basic_group_full_info.rb +13 -0
- data/lib/tdlib/types/bot_command.rb +10 -0
- data/lib/tdlib/types/bot_info.rb +10 -0
- data/lib/tdlib/types/call.rb +14 -0
- data/lib/tdlib/types/call_connection.rb +16 -0
- data/lib/tdlib/types/call_discard_reason.rb +14 -0
- data/lib/tdlib/types/call_discard_reason/declined.rb +6 -0
- data/lib/tdlib/types/call_discard_reason/disconnected.rb +5 -0
- data/lib/tdlib/types/call_discard_reason/empty.rb +5 -0
- data/lib/tdlib/types/call_discard_reason/hung_up.rb +5 -0
- data/lib/tdlib/types/call_discard_reason/missed.rb +6 -0
- data/lib/tdlib/types/call_id.rb +8 -0
- data/lib/tdlib/types/call_protocol.rb +14 -0
- data/lib/tdlib/types/call_state.rb +15 -0
- data/lib/tdlib/types/call_state/discarded.rb +12 -0
- data/lib/tdlib/types/call_state/error.rb +9 -0
- data/lib/tdlib/types/call_state/exchanging_keys.rb +5 -0
- data/lib/tdlib/types/call_state/hanging_up.rb +5 -0
- data/lib/tdlib/types/call_state/pending.rb +10 -0
- data/lib/tdlib/types/call_state/ready.rb +16 -0
- data/lib/tdlib/types/callback_query_answer.rb +12 -0
- data/lib/tdlib/types/callback_query_payload.rb +11 -0
- data/lib/tdlib/types/callback_query_payload/data.rb +8 -0
- data/lib/tdlib/types/callback_query_payload/game.rb +8 -0
- data/lib/tdlib/types/chat.rb +51 -0
- data/lib/tdlib/types/chat_action.rb +22 -0
- data/lib/tdlib/types/chat_action/cancel.rb +5 -0
- data/lib/tdlib/types/chat_action/choosing_contact.rb +5 -0
- data/lib/tdlib/types/chat_action/choosing_location.rb +5 -0
- data/lib/tdlib/types/chat_action/recording_video.rb +5 -0
- data/lib/tdlib/types/chat_action/recording_video_note.rb +5 -0
- data/lib/tdlib/types/chat_action/recording_voice_note.rb +5 -0
- data/lib/tdlib/types/chat_action/start_playing_game.rb +5 -0
- data/lib/tdlib/types/chat_action/typing.rb +5 -0
- data/lib/tdlib/types/chat_action/uploading_document.rb +8 -0
- data/lib/tdlib/types/chat_action/uploading_photo.rb +8 -0
- data/lib/tdlib/types/chat_action/uploading_video.rb +8 -0
- data/lib/tdlib/types/chat_action/uploading_video_note.rb +8 -0
- data/lib/tdlib/types/chat_action/uploading_voice_note.rb +8 -0
- data/lib/tdlib/types/chat_event.rb +14 -0
- data/lib/tdlib/types/chat_event_action.rb +26 -0
- data/lib/tdlib/types/chat_event_action/description_changed.rb +10 -0
- data/lib/tdlib/types/chat_event_action/invites_toggled.rb +8 -0
- data/lib/tdlib/types/chat_event_action/is_all_history_available_toggled.rb +8 -0
- data/lib/tdlib/types/chat_event_action/member_invited.rb +10 -0
- data/lib/tdlib/types/chat_event_action/member_joined.rb +5 -0
- data/lib/tdlib/types/chat_event_action/member_left.rb +5 -0
- data/lib/tdlib/types/chat_event_action/member_promoted.rb +12 -0
- data/lib/tdlib/types/chat_event_action/member_restricted.rb +12 -0
- data/lib/tdlib/types/chat_event_action/message_deleted.rb +8 -0
- data/lib/tdlib/types/chat_event_action/message_edited.rb +10 -0
- data/lib/tdlib/types/chat_event_action/message_pinned.rb +8 -0
- data/lib/tdlib/types/chat_event_action/message_unpinned.rb +5 -0
- data/lib/tdlib/types/chat_event_action/photo_changed.rb +10 -0
- data/lib/tdlib/types/chat_event_action/sign_messages_toggled.rb +8 -0
- data/lib/tdlib/types/chat_event_action/sticker_set_changed.rb +10 -0
- data/lib/tdlib/types/chat_event_action/title_changed.rb +10 -0
- data/lib/tdlib/types/chat_event_action/username_changed.rb +10 -0
- data/lib/tdlib/types/chat_event_log_filters.rb +27 -0
- data/lib/tdlib/types/chat_events.rb +8 -0
- data/lib/tdlib/types/chat_invite_link.rb +8 -0
- data/lib/tdlib/types/chat_invite_link_info.rb +20 -0
- data/lib/tdlib/types/chat_member.rb +18 -0
- data/lib/tdlib/types/chat_member_status.rb +15 -0
- data/lib/tdlib/types/chat_member_status/administrator.rb +29 -0
- data/lib/tdlib/types/chat_member_status/banned.rb +11 -0
- data/lib/tdlib/types/chat_member_status/creator.rb +8 -0
- data/lib/tdlib/types/chat_member_status/left.rb +5 -0
- data/lib/tdlib/types/chat_member_status/member.rb +5 -0
- data/lib/tdlib/types/chat_member_status/restricted.rb +27 -0
- data/lib/tdlib/types/chat_members.rb +10 -0
- data/lib/tdlib/types/chat_members_filter.rb +14 -0
- data/lib/tdlib/types/chat_members_filter/administrators.rb +5 -0
- data/lib/tdlib/types/chat_members_filter/banned.rb +5 -0
- data/lib/tdlib/types/chat_members_filter/bots.rb +5 -0
- data/lib/tdlib/types/chat_members_filter/members.rb +5 -0
- data/lib/tdlib/types/chat_members_filter/restricted.rb +5 -0
- data/lib/tdlib/types/chat_notification_settings.rb +22 -0
- data/lib/tdlib/types/chat_photo.rb +10 -0
- data/lib/tdlib/types/chat_report_reason.rb +14 -0
- data/lib/tdlib/types/chat_report_reason/copyright.rb +5 -0
- data/lib/tdlib/types/chat_report_reason/custom.rb +8 -0
- data/lib/tdlib/types/chat_report_reason/pornography.rb +5 -0
- data/lib/tdlib/types/chat_report_reason/spam.rb +5 -0
- data/lib/tdlib/types/chat_report_reason/violence.rb +5 -0
- data/lib/tdlib/types/chat_report_spam_state.rb +8 -0
- data/lib/tdlib/types/chat_type.rb +13 -0
- data/lib/tdlib/types/chat_type/basic_group.rb +8 -0
- data/lib/tdlib/types/chat_type/private.rb +8 -0
- data/lib/tdlib/types/chat_type/secret.rb +10 -0
- data/lib/tdlib/types/chat_type/supergroup.rb +11 -0
- data/lib/tdlib/types/chats.rb +8 -0
- data/lib/tdlib/types/check_chat_username_result.rb +14 -0
- data/lib/tdlib/types/check_chat_username_result/ok.rb +5 -0
- data/lib/tdlib/types/check_chat_username_result/public_chats_too_much.rb +5 -0
- data/lib/tdlib/types/check_chat_username_result/public_groups_unavailable.rb +5 -0
- data/lib/tdlib/types/check_chat_username_result/username_invalid.rb +5 -0
- data/lib/tdlib/types/check_chat_username_result/username_occupied.rb +5 -0
- data/lib/tdlib/types/connected_website.rb +25 -0
- data/lib/tdlib/types/connected_websites.rb +8 -0
- data/lib/tdlib/types/connection_state.rb +14 -0
- data/lib/tdlib/types/connection_state/connecting.rb +5 -0
- data/lib/tdlib/types/connection_state/connecting_to_proxy.rb +5 -0
- data/lib/tdlib/types/connection_state/ready.rb +5 -0
- data/lib/tdlib/types/connection_state/updating.rb +5 -0
- data/lib/tdlib/types/connection_state/waiting_for_network.rb +6 -0
- data/lib/tdlib/types/contact.rb +16 -0
- data/lib/tdlib/types/count.rb +8 -0
- data/lib/tdlib/types/custom_request_result.rb +8 -0
- data/lib/tdlib/types/date.rb +12 -0
- data/lib/tdlib/types/dated_file.rb +10 -0
- data/lib/tdlib/types/deep_link_info.rb +10 -0
- data/lib/tdlib/types/device_token.rb +22 -0
- data/lib/tdlib/types/device_token/apple_push.rb +10 -0
- data/lib/tdlib/types/device_token/apple_push_vo_ip.rb +10 -0
- data/lib/tdlib/types/device_token/black_berry_push.rb +8 -0
- data/lib/tdlib/types/device_token/google_cloud_messaging.rb +8 -0
- data/lib/tdlib/types/device_token/microsoft_push.rb +8 -0
- data/lib/tdlib/types/device_token/microsoft_push_vo_ip.rb +8 -0
- data/lib/tdlib/types/device_token/simple_push.rb +9 -0
- data/lib/tdlib/types/device_token/tizen_push.rb +8 -0
- data/lib/tdlib/types/device_token/ubuntu_push.rb +8 -0
- data/lib/tdlib/types/device_token/web_push.rb +13 -0
- data/lib/tdlib/types/device_token/windows_push.rb +9 -0
- data/lib/tdlib/types/document.rb +14 -0
- data/lib/tdlib/types/draft_message.rb +11 -0
- data/lib/tdlib/types/email_address_authentication_code_info.rb +10 -0
- data/lib/tdlib/types/encrypted_credentials.rb +12 -0
- data/lib/tdlib/types/encrypted_passport_element.rb +25 -0
- data/lib/tdlib/types/error.rb +12 -0
- data/lib/tdlib/types/file.rb +18 -0
- data/lib/tdlib/types/file_type.rb +25 -0
- data/lib/tdlib/types/file_type/animation.rb +5 -0
- data/lib/tdlib/types/file_type/audio.rb +5 -0
- data/lib/tdlib/types/file_type/document.rb +5 -0
- data/lib/tdlib/types/file_type/none.rb +5 -0
- data/lib/tdlib/types/file_type/photo.rb +5 -0
- data/lib/tdlib/types/file_type/profile_photo.rb +5 -0
- data/lib/tdlib/types/file_type/secret.rb +5 -0
- data/lib/tdlib/types/file_type/secret_thumbnail.rb +5 -0
- data/lib/tdlib/types/file_type/secure.rb +5 -0
- data/lib/tdlib/types/file_type/sticker.rb +5 -0
- data/lib/tdlib/types/file_type/thumbnail.rb +5 -0
- data/lib/tdlib/types/file_type/unknown.rb +5 -0
- data/lib/tdlib/types/file_type/video.rb +5 -0
- data/lib/tdlib/types/file_type/video_note.rb +5 -0
- data/lib/tdlib/types/file_type/voice_note.rb +5 -0
- data/lib/tdlib/types/file_type/wallpaper.rb +5 -0
- data/lib/tdlib/types/formatted_text.rb +10 -0
- data/lib/tdlib/types/found_messages.rb +10 -0
- data/lib/tdlib/types/game.rb +21 -0
- data/lib/tdlib/types/game_high_score.rb +12 -0
- data/lib/tdlib/types/game_high_scores.rb +8 -0
- data/lib/tdlib/types/hashtags.rb +8 -0
- data/lib/tdlib/types/identity_document.rb +19 -0
- data/lib/tdlib/types/imported_contacts.rb +12 -0
- data/lib/tdlib/types/inline_keyboard_button.rb +10 -0
- data/lib/tdlib/types/inline_keyboard_button_type.rb +14 -0
- data/lib/tdlib/types/inline_keyboard_button_type/buy.rb +7 -0
- data/lib/tdlib/types/inline_keyboard_button_type/callback.rb +8 -0
- data/lib/tdlib/types/inline_keyboard_button_type/callback_game.rb +7 -0
- data/lib/tdlib/types/inline_keyboard_button_type/switch_inline.rb +10 -0
- data/lib/tdlib/types/inline_keyboard_button_type/url.rb +8 -0
- data/lib/tdlib/types/inline_query_result.rb +21 -0
- data/lib/tdlib/types/inline_query_result/animation.rb +12 -0
- data/lib/tdlib/types/inline_query_result/article.rb +18 -0
- data/lib/tdlib/types/inline_query_result/audio.rb +10 -0
- data/lib/tdlib/types/inline_query_result/contact.rb +12 -0
- data/lib/tdlib/types/inline_query_result/document.rb +14 -0
- data/lib/tdlib/types/inline_query_result/game.rb +10 -0
- data/lib/tdlib/types/inline_query_result/location.rb +14 -0
- data/lib/tdlib/types/inline_query_result/photo.rb +14 -0
- data/lib/tdlib/types/inline_query_result/sticker.rb +10 -0
- data/lib/tdlib/types/inline_query_result/venue.rb +12 -0
- data/lib/tdlib/types/inline_query_result/video.rb +14 -0
- data/lib/tdlib/types/inline_query_result/voice_note.rb +12 -0
- data/lib/tdlib/types/inline_query_results.rb +19 -0
- data/lib/tdlib/types/input_credentials.rb +13 -0
- data/lib/tdlib/types/input_credentials/android_pay.rb +8 -0
- data/lib/tdlib/types/input_credentials/apple_pay.rb +8 -0
- data/lib/tdlib/types/input_credentials/new.rb +10 -0
- data/lib/tdlib/types/input_credentials/saved.rb +9 -0
- data/lib/tdlib/types/input_file.rb +13 -0
- data/lib/tdlib/types/input_file/generated.rb +14 -0
- data/lib/tdlib/types/input_file/id.rb +8 -0
- data/lib/tdlib/types/input_file/local.rb +8 -0
- data/lib/tdlib/types/input_file/remote.rb +8 -0
- data/lib/tdlib/types/input_identity_document.rb +19 -0
- data/lib/tdlib/types/input_inline_query_result.rb +22 -0
- data/lib/tdlib/types/input_inline_query_result/animated_gif.rb +26 -0
- data/lib/tdlib/types/input_inline_query_result/animated_mpeg4.rb +27 -0
- data/lib/tdlib/types/input_inline_query_result/article.rb +28 -0
- data/lib/tdlib/types/input_inline_query_result/audio.rb +22 -0
- data/lib/tdlib/types/input_inline_query_result/contact.rb +22 -0
- data/lib/tdlib/types/input_inline_query_result/document.rb +29 -0
- data/lib/tdlib/types/input_inline_query_result/game.rb +12 -0
- data/lib/tdlib/types/input_inline_query_result/location.rb +27 -0
- data/lib/tdlib/types/input_inline_query_result/photo.rb +25 -0
- data/lib/tdlib/types/input_inline_query_result/sticker.rb +22 -0
- data/lib/tdlib/types/input_inline_query_result/venue.rb +22 -0
- data/lib/tdlib/types/input_inline_query_result/video.rb +31 -0
- data/lib/tdlib/types/input_inline_query_result/voice_note.rb +20 -0
- data/lib/tdlib/types/input_message_content.rb +24 -0
- data/lib/tdlib/types/input_message_content/animation.rb +18 -0
- data/lib/tdlib/types/input_message_content/audio.rb +18 -0
- data/lib/tdlib/types/input_message_content/contact.rb +8 -0
- data/lib/tdlib/types/input_message_content/document.rb +12 -0
- data/lib/tdlib/types/input_message_content/forwarded.rb +13 -0
- data/lib/tdlib/types/input_message_content/game.rb +10 -0
- data/lib/tdlib/types/input_message_content/invoice.rb +28 -0
- data/lib/tdlib/types/input_message_content/location.rb +11 -0
- data/lib/tdlib/types/input_message_content/photo.rb +22 -0
- data/lib/tdlib/types/input_message_content/sticker.rb +14 -0
- data/lib/tdlib/types/input_message_content/text.rb +14 -0
- data/lib/tdlib/types/input_message_content/venue.rb +8 -0
- data/lib/tdlib/types/input_message_content/video.rb +25 -0
- data/lib/tdlib/types/input_message_content/video_note.rb +14 -0
- data/lib/tdlib/types/input_message_content/voice_note.rb +14 -0
- data/lib/tdlib/types/input_passport_element.rb +22 -0
- data/lib/tdlib/types/input_passport_element/address.rb +8 -0
- data/lib/tdlib/types/input_passport_element/bank_statement.rb +8 -0
- data/lib/tdlib/types/input_passport_element/driver_license.rb +8 -0
- data/lib/tdlib/types/input_passport_element/email_address.rb +8 -0
- data/lib/tdlib/types/input_passport_element/identity_card.rb +8 -0
- data/lib/tdlib/types/input_passport_element/internal_passport.rb +8 -0
- data/lib/tdlib/types/input_passport_element/passport.rb +8 -0
- data/lib/tdlib/types/input_passport_element/passport_registration.rb +8 -0
- data/lib/tdlib/types/input_passport_element/personal_details.rb +8 -0
- data/lib/tdlib/types/input_passport_element/phone_number.rb +8 -0
- data/lib/tdlib/types/input_passport_element/rental_agreement.rb +8 -0
- data/lib/tdlib/types/input_passport_element/temporary_registration.rb +8 -0
- data/lib/tdlib/types/input_passport_element/utility_bill.rb +8 -0
- data/lib/tdlib/types/input_passport_element_error.rb +12 -0
- data/lib/tdlib/types/input_passport_element_error_source.rb +18 -0
- data/lib/tdlib/types/input_passport_element_error_source/data_field.rb +11 -0
- data/lib/tdlib/types/input_passport_element_error_source/file.rb +9 -0
- data/lib/tdlib/types/input_passport_element_error_source/files.rb +9 -0
- data/lib/tdlib/types/input_passport_element_error_source/front_side.rb +9 -0
- data/lib/tdlib/types/input_passport_element_error_source/reverse_side.rb +9 -0
- data/lib/tdlib/types/input_passport_element_error_source/selfie.rb +9 -0
- data/lib/tdlib/types/input_passport_element_error_source/translation_file.rb +9 -0
- data/lib/tdlib/types/input_passport_element_error_source/translation_files.rb +9 -0
- data/lib/tdlib/types/input_passport_element_error_source/unspecified.rb +9 -0
- data/lib/tdlib/types/input_personal_document.rb +11 -0
- data/lib/tdlib/types/input_sticker.rb +14 -0
- data/lib/tdlib/types/input_thumbnail.rb +16 -0
- data/lib/tdlib/types/invoice.rb +27 -0
- data/lib/tdlib/types/keyboard_button.rb +10 -0
- data/lib/tdlib/types/keyboard_button_type.rb +12 -0
- data/lib/tdlib/types/keyboard_button_type/request_location.rb +5 -0
- data/lib/tdlib/types/keyboard_button_type/request_phone_number.rb +5 -0
- data/lib/tdlib/types/keyboard_button_type/text.rb +5 -0
- data/lib/tdlib/types/labeled_price_part.rb +10 -0
- data/lib/tdlib/types/language_pack_info.rb +14 -0
- data/lib/tdlib/types/language_pack_string.rb +10 -0
- data/lib/tdlib/types/language_pack_string_value.rb +12 -0
- data/lib/tdlib/types/language_pack_string_value/deleted.rb +5 -0
- data/lib/tdlib/types/language_pack_string_value/ordinary.rb +8 -0
- data/lib/tdlib/types/language_pack_string_value/pluralized.rb +18 -0
- data/lib/tdlib/types/language_pack_strings.rb +8 -0
- data/lib/tdlib/types/link_state.rb +13 -0
- data/lib/tdlib/types/link_state/is_contact.rb +5 -0
- data/lib/tdlib/types/link_state/knows_phone_number.rb +5 -0
- data/lib/tdlib/types/link_state/none.rb +5 -0
- data/lib/tdlib/types/local_file.rb +25 -0
- data/lib/tdlib/types/localization_target_info.rb +8 -0
- data/lib/tdlib/types/location.rb +10 -0
- data/lib/tdlib/types/mask_point.rb +13 -0
- data/lib/tdlib/types/mask_point/chin.rb +5 -0
- data/lib/tdlib/types/mask_point/eyes.rb +5 -0
- data/lib/tdlib/types/mask_point/forehead.rb +5 -0
- data/lib/tdlib/types/mask_point/mouth.rb +5 -0
- data/lib/tdlib/types/mask_position.rb +17 -0
- data/lib/tdlib/types/message.rb +59 -0
- data/lib/tdlib/types/message_content.rb +48 -0
- data/lib/tdlib/types/message_content/animation.rb +13 -0
- data/lib/tdlib/types/message_content/audio.rb +10 -0
- data/lib/tdlib/types/message_content/basic_group_chat_create.rb +10 -0
- data/lib/tdlib/types/message_content/call.rb +10 -0
- data/lib/tdlib/types/message_content/chat_add_members.rb +8 -0
- data/lib/tdlib/types/message_content/chat_change_photo.rb +8 -0
- data/lib/tdlib/types/message_content/chat_change_title.rb +8 -0
- data/lib/tdlib/types/message_content/chat_delete_member.rb +8 -0
- data/lib/tdlib/types/message_content/chat_delete_photo.rb +5 -0
- data/lib/tdlib/types/message_content/chat_join_by_link.rb +5 -0
- data/lib/tdlib/types/message_content/chat_set_ttl.rb +8 -0
- data/lib/tdlib/types/message_content/chat_upgrade_from.rb +10 -0
- data/lib/tdlib/types/message_content/chat_upgrade_to.rb +8 -0
- data/lib/tdlib/types/message_content/contact.rb +8 -0
- data/lib/tdlib/types/message_content/contact_registered.rb +5 -0
- data/lib/tdlib/types/message_content/custom_service_action.rb +8 -0
- data/lib/tdlib/types/message_content/document.rb +10 -0
- data/lib/tdlib/types/message_content/expired_photo.rb +5 -0
- data/lib/tdlib/types/message_content/expired_video.rb +5 -0
- data/lib/tdlib/types/message_content/game.rb +8 -0
- data/lib/tdlib/types/message_content/game_score.rb +13 -0
- data/lib/tdlib/types/message_content/invoice.rb +26 -0
- data/lib/tdlib/types/message_content/location.rb +14 -0
- data/lib/tdlib/types/message_content/passport_data_received.rb +10 -0
- data/lib/tdlib/types/message_content/passport_data_sent.rb +8 -0
- data/lib/tdlib/types/message_content/payment_successful.rb +13 -0
- data/lib/tdlib/types/message_content/payment_successful_bot.rb +24 -0
- data/lib/tdlib/types/message_content/photo.rb +12 -0
- data/lib/tdlib/types/message_content/pin_message.rb +8 -0
- data/lib/tdlib/types/message_content/screenshot_taken.rb +5 -0
- data/lib/tdlib/types/message_content/sticker.rb +8 -0
- data/lib/tdlib/types/message_content/supergroup_chat_create.rb +8 -0
- data/lib/tdlib/types/message_content/text.rb +10 -0
- data/lib/tdlib/types/message_content/unsupported.rb +5 -0
- data/lib/tdlib/types/message_content/venue.rb +8 -0
- data/lib/tdlib/types/message_content/video.rb +13 -0
- data/lib/tdlib/types/message_content/video_note.rb +13 -0
- data/lib/tdlib/types/message_content/voice_note.rb +12 -0
- data/lib/tdlib/types/message_content/website_connected.rb +8 -0
- data/lib/tdlib/types/message_forward_info.rb +11 -0
- data/lib/tdlib/types/message_forward_info/message_forwarded_from_user.rb +16 -0
- data/lib/tdlib/types/message_forward_info/message_forwarded_post.rb +21 -0
- data/lib/tdlib/types/message_sending_state.rb +11 -0
- data/lib/tdlib/types/message_sending_state/failed.rb +5 -0
- data/lib/tdlib/types/message_sending_state/pending.rb +5 -0
- data/lib/tdlib/types/messages.rb +10 -0
- data/lib/tdlib/types/network_statistics.rb +10 -0
- data/lib/tdlib/types/network_statistics_entry.rb +11 -0
- data/lib/tdlib/types/network_statistics_entry/call.rb +15 -0
- data/lib/tdlib/types/network_statistics_entry/file.rb +15 -0
- data/lib/tdlib/types/network_type.rb +14 -0
- data/lib/tdlib/types/network_type/mobile.rb +5 -0
- data/lib/tdlib/types/network_type/mobile_roaming.rb +5 -0
- data/lib/tdlib/types/network_type/none.rb +5 -0
- data/lib/tdlib/types/network_type/other.rb +5 -0
- data/lib/tdlib/types/network_type/wi_fi.rb +5 -0
- data/lib/tdlib/types/notification_settings_scope.rb +11 -0
- data/lib/tdlib/types/notification_settings_scope/group_chats.rb +6 -0
- data/lib/tdlib/types/notification_settings_scope/private_chats.rb +6 -0
- data/lib/tdlib/types/ok.rb +5 -0
- data/lib/tdlib/types/option_value.rb +13 -0
- data/lib/tdlib/types/option_value/boolean.rb +8 -0
- data/lib/tdlib/types/option_value/empty.rb +5 -0
- data/lib/tdlib/types/option_value/integer.rb +8 -0
- data/lib/tdlib/types/option_value/string.rb +8 -0
- data/lib/tdlib/types/order_info.rb +14 -0
- data/lib/tdlib/types/page_block.rb +32 -0
- data/lib/tdlib/types/page_block/anchor.rb +8 -0
- data/lib/tdlib/types/page_block/animation.rb +12 -0
- data/lib/tdlib/types/page_block/audio.rb +10 -0
- data/lib/tdlib/types/page_block/author_date.rb +10 -0
- data/lib/tdlib/types/page_block/block_quote.rb +10 -0
- data/lib/tdlib/types/page_block/chat_link.rb +12 -0
- data/lib/tdlib/types/page_block/collage.rb +10 -0
- data/lib/tdlib/types/page_block/cover.rb +8 -0
- data/lib/tdlib/types/page_block/divider.rb +5 -0
- data/lib/tdlib/types/page_block/embedded.rb +22 -0
- data/lib/tdlib/types/page_block/embedded_post.rb +18 -0
- data/lib/tdlib/types/page_block/footer.rb +8 -0
- data/lib/tdlib/types/page_block/header.rb +8 -0
- data/lib/tdlib/types/page_block/list.rb +10 -0
- data/lib/tdlib/types/page_block/paragraph.rb +8 -0
- data/lib/tdlib/types/page_block/photo.rb +10 -0
- data/lib/tdlib/types/page_block/preformatted.rb +10 -0
- data/lib/tdlib/types/page_block/pull_quote.rb +10 -0
- data/lib/tdlib/types/page_block/slideshow.rb +10 -0
- data/lib/tdlib/types/page_block/subheader.rb +8 -0
- data/lib/tdlib/types/page_block/subtitle.rb +8 -0
- data/lib/tdlib/types/page_block/title.rb +8 -0
- data/lib/tdlib/types/page_block/video.rb +14 -0
- data/lib/tdlib/types/passport_authorization_form.rb +17 -0
- data/lib/tdlib/types/passport_element.rb +22 -0
- data/lib/tdlib/types/passport_element/address.rb +8 -0
- data/lib/tdlib/types/passport_element/bank_statement.rb +8 -0
- data/lib/tdlib/types/passport_element/driver_license.rb +8 -0
- data/lib/tdlib/types/passport_element/email_address.rb +8 -0
- data/lib/tdlib/types/passport_element/identity_card.rb +8 -0
- data/lib/tdlib/types/passport_element/internal_passport.rb +8 -0
- data/lib/tdlib/types/passport_element/passport.rb +8 -0
- data/lib/tdlib/types/passport_element/passport_registration.rb +8 -0
- data/lib/tdlib/types/passport_element/personal_details.rb +8 -0
- data/lib/tdlib/types/passport_element/phone_number.rb +8 -0
- data/lib/tdlib/types/passport_element/rental_agreement.rb +8 -0
- data/lib/tdlib/types/passport_element/temporary_registration.rb +8 -0
- data/lib/tdlib/types/passport_element/utility_bill.rb +8 -0
- data/lib/tdlib/types/passport_element_error.rb +12 -0
- data/lib/tdlib/types/passport_element_error_source.rb +18 -0
- data/lib/tdlib/types/passport_element_error_source/data_field.rb +9 -0
- data/lib/tdlib/types/passport_element_error_source/file.rb +6 -0
- data/lib/tdlib/types/passport_element_error_source/files.rb +6 -0
- data/lib/tdlib/types/passport_element_error_source/front_side.rb +6 -0
- data/lib/tdlib/types/passport_element_error_source/reverse_side.rb +6 -0
- data/lib/tdlib/types/passport_element_error_source/selfie.rb +6 -0
- data/lib/tdlib/types/passport_element_error_source/translation_file.rb +6 -0
- data/lib/tdlib/types/passport_element_error_source/translation_files.rb +6 -0
- data/lib/tdlib/types/passport_element_error_source/unspecified.rb +6 -0
- data/lib/tdlib/types/passport_element_type.rb +22 -0
- data/lib/tdlib/types/passport_element_type/address.rb +5 -0
- data/lib/tdlib/types/passport_element_type/bank_statement.rb +5 -0
- data/lib/tdlib/types/passport_element_type/driver_license.rb +5 -0
- data/lib/tdlib/types/passport_element_type/email_address.rb +5 -0
- data/lib/tdlib/types/passport_element_type/identity_card.rb +5 -0
- data/lib/tdlib/types/passport_element_type/internal_passport.rb +5 -0
- data/lib/tdlib/types/passport_element_type/passport.rb +5 -0
- data/lib/tdlib/types/passport_element_type/passport_registration.rb +5 -0
- data/lib/tdlib/types/passport_element_type/personal_details.rb +5 -0
- data/lib/tdlib/types/passport_element_type/phone_number.rb +5 -0
- data/lib/tdlib/types/passport_element_type/rental_agreement.rb +5 -0
- data/lib/tdlib/types/passport_element_type/temporary_registration.rb +5 -0
- data/lib/tdlib/types/passport_element_type/utility_bill.rb +5 -0
- data/lib/tdlib/types/passport_elements.rb +8 -0
- data/lib/tdlib/types/passport_required_element.rb +9 -0
- data/lib/tdlib/types/passport_suitable_element.rb +15 -0
- data/lib/tdlib/types/password_state.rb +17 -0
- data/lib/tdlib/types/payment_form.rb +23 -0
- data/lib/tdlib/types/payment_receipt.rb +18 -0
- data/lib/tdlib/types/payment_result.rb +11 -0
- data/lib/tdlib/types/payments_provider_stripe.rb +14 -0
- data/lib/tdlib/types/personal_details.rb +26 -0
- data/lib/tdlib/types/personal_document.rb +11 -0
- data/lib/tdlib/types/photo.rb +12 -0
- data/lib/tdlib/types/photo_size.rb +14 -0
- data/lib/tdlib/types/profile_photo.rb +13 -0
- data/lib/tdlib/types/proxies.rb +8 -0
- data/lib/tdlib/types/proxy.rb +18 -0
- data/lib/tdlib/types/proxy_type.rb +12 -0
- data/lib/tdlib/types/proxy_type/http.rb +13 -0
- data/lib/tdlib/types/proxy_type/mtproto.rb +8 -0
- data/lib/tdlib/types/proxy_type/socks5.rb +10 -0
- data/lib/tdlib/types/public_message_link.rb +10 -0
- data/lib/tdlib/types/recovery_email_address.rb +8 -0
- data/lib/tdlib/types/remote_file.rb +22 -0
- data/lib/tdlib/types/reply_markup.rb +13 -0
- data/lib/tdlib/types/reply_markup/force_reply.rb +10 -0
- data/lib/tdlib/types/reply_markup/inline_keyboard.rb +8 -0
- data/lib/tdlib/types/reply_markup/remove_keyboard.rb +11 -0
- data/lib/tdlib/types/reply_markup/show_keyboard.rb +16 -0
- data/lib/tdlib/types/rich_text.rb +18 -0
- data/lib/tdlib/types/rich_text/bold.rb +8 -0
- data/lib/tdlib/types/rich_text/email_address.rb +10 -0
- data/lib/tdlib/types/rich_text/fixed.rb +8 -0
- data/lib/tdlib/types/rich_text/italic.rb +8 -0
- data/lib/tdlib/types/rich_text/plain.rb +8 -0
- data/lib/tdlib/types/rich_text/s.rb +8 -0
- data/lib/tdlib/types/rich_text/strikethrough.rb +8 -0
- data/lib/tdlib/types/rich_text/underline.rb +8 -0
- data/lib/tdlib/types/rich_text/url.rb +10 -0
- data/lib/tdlib/types/saved_credentials.rb +10 -0
- data/lib/tdlib/types/scope_notification_settings.rb +13 -0
- data/lib/tdlib/types/search_messages_filter.rb +25 -0
- data/lib/tdlib/types/search_messages_filter/animation.rb +5 -0
- data/lib/tdlib/types/search_messages_filter/audio.rb +5 -0
- data/lib/tdlib/types/search_messages_filter/call.rb +5 -0
- data/lib/tdlib/types/search_messages_filter/chat_photo.rb +5 -0
- data/lib/tdlib/types/search_messages_filter/document.rb +5 -0
- data/lib/tdlib/types/search_messages_filter/empty.rb +5 -0
- data/lib/tdlib/types/search_messages_filter/mention.rb +5 -0
- data/lib/tdlib/types/search_messages_filter/missed_call.rb +5 -0
- data/lib/tdlib/types/search_messages_filter/photo.rb +5 -0
- data/lib/tdlib/types/search_messages_filter/photo_and_video.rb +5 -0
- data/lib/tdlib/types/search_messages_filter/unread_mention.rb +6 -0
- data/lib/tdlib/types/search_messages_filter/url.rb +5 -0
- data/lib/tdlib/types/search_messages_filter/video.rb +5 -0
- data/lib/tdlib/types/search_messages_filter/video_note.rb +5 -0
- data/lib/tdlib/types/search_messages_filter/voice_and_video_note.rb +5 -0
- data/lib/tdlib/types/search_messages_filter/voice_note.rb +5 -0
- data/lib/tdlib/types/seconds.rb +8 -0
- data/lib/tdlib/types/secret_chat.rb +26 -0
- data/lib/tdlib/types/secret_chat_state.rb +12 -0
- data/lib/tdlib/types/secret_chat_state/closed.rb +5 -0
- data/lib/tdlib/types/secret_chat_state/pending.rb +5 -0
- data/lib/tdlib/types/secret_chat_state/ready.rb +5 -0
- data/lib/tdlib/types/session.rb +39 -0
- data/lib/tdlib/types/sessions.rb +8 -0
- data/lib/tdlib/types/shipping_option.rb +13 -0
- data/lib/tdlib/types/sticker.rb +22 -0
- data/lib/tdlib/types/sticker_emojis.rb +10 -0
- data/lib/tdlib/types/sticker_set.rb +27 -0
- data/lib/tdlib/types/sticker_set_info.rb +29 -0
- data/lib/tdlib/types/sticker_sets.rb +10 -0
- data/lib/tdlib/types/stickers.rb +8 -0
- data/lib/tdlib/types/storage_statistics.rb +12 -0
- data/lib/tdlib/types/storage_statistics_by_chat.rb +14 -0
- data/lib/tdlib/types/storage_statistics_by_file_type.rb +12 -0
- data/lib/tdlib/types/storage_statistics_fast.rb +12 -0
- data/lib/tdlib/types/supergroup.rb +40 -0
- data/lib/tdlib/types/supergroup_full_info.rb +39 -0
- data/lib/tdlib/types/supergroup_members_filter.rb +15 -0
- data/lib/tdlib/types/supergroup_members_filter/administrators.rb +5 -0
- data/lib/tdlib/types/supergroup_members_filter/banned.rb +8 -0
- data/lib/tdlib/types/supergroup_members_filter/bots.rb +5 -0
- data/lib/tdlib/types/supergroup_members_filter/recent.rb +5 -0
- data/lib/tdlib/types/supergroup_members_filter/restricted.rb +8 -0
- data/lib/tdlib/types/supergroup_members_filter/search.rb +8 -0
- data/lib/tdlib/types/t_me_url.rb +10 -0
- data/lib/tdlib/types/t_me_url_type.rb +13 -0
- data/lib/tdlib/types/t_me_url_type/chat_invite.rb +8 -0
- data/lib/tdlib/types/t_me_url_type/sticker_set.rb +8 -0
- data/lib/tdlib/types/t_me_url_type/supergroup.rb +8 -0
- data/lib/tdlib/types/t_me_url_type/user.rb +8 -0
- data/lib/tdlib/types/t_me_urls.rb +8 -0
- data/lib/tdlib/types/tdlib_parameters.rb +46 -0
- data/lib/tdlib/types/temporary_password_state.rb +10 -0
- data/lib/tdlib/types/terms_of_service.rb +12 -0
- data/lib/tdlib/types/text.rb +8 -0
- data/lib/tdlib/types/text_entities.rb +8 -0
- data/lib/tdlib/types/text_entity.rb +12 -0
- data/lib/tdlib/types/text_entity_type.rb +23 -0
- data/lib/tdlib/types/text_entity_type/bold.rb +5 -0
- data/lib/tdlib/types/text_entity_type/bot_command.rb +6 -0
- data/lib/tdlib/types/text_entity_type/cashtag.rb +6 -0
- data/lib/tdlib/types/text_entity_type/code.rb +5 -0
- data/lib/tdlib/types/text_entity_type/email_address.rb +5 -0
- data/lib/tdlib/types/text_entity_type/hashtag.rb +5 -0
- data/lib/tdlib/types/text_entity_type/italic.rb +5 -0
- data/lib/tdlib/types/text_entity_type/mention.rb +5 -0
- data/lib/tdlib/types/text_entity_type/mention_name.rb +8 -0
- data/lib/tdlib/types/text_entity_type/phone_number.rb +5 -0
- data/lib/tdlib/types/text_entity_type/pre.rb +5 -0
- data/lib/tdlib/types/text_entity_type/pre_code.rb +8 -0
- data/lib/tdlib/types/text_entity_type/text_url.rb +8 -0
- data/lib/tdlib/types/text_entity_type/url.rb +5 -0
- data/lib/tdlib/types/text_parse_mode.rb +11 -0
- data/lib/tdlib/types/text_parse_mode/html.rb +5 -0
- data/lib/tdlib/types/text_parse_mode/markdown.rb +5 -0
- data/lib/tdlib/types/top_chat_category.rb +15 -0
- data/lib/tdlib/types/top_chat_category/bots.rb +5 -0
- data/lib/tdlib/types/top_chat_category/calls.rb +5 -0
- data/lib/tdlib/types/top_chat_category/channels.rb +5 -0
- data/lib/tdlib/types/top_chat_category/groups.rb +5 -0
- data/lib/tdlib/types/top_chat_category/inline_bots.rb +5 -0
- data/lib/tdlib/types/top_chat_category/users.rb +5 -0
- data/lib/tdlib/types/update.rb +70 -0
- data/lib/tdlib/types/update/authorization_state.rb +8 -0
- data/lib/tdlib/types/update/basic_group.rb +9 -0
- data/lib/tdlib/types/update/basic_group_full_info.rb +10 -0
- data/lib/tdlib/types/update/call.rb +8 -0
- data/lib/tdlib/types/update/chat_default_disable_notification.rb +10 -0
- data/lib/tdlib/types/update/chat_draft_message.rb +14 -0
- data/lib/tdlib/types/update/chat_is_marked_as_unread.rb +10 -0
- data/lib/tdlib/types/update/chat_is_pinned.rb +12 -0
- data/lib/tdlib/types/update/chat_is_sponsored.rb +12 -0
- data/lib/tdlib/types/update/chat_last_message.rb +14 -0
- data/lib/tdlib/types/update/chat_notification_settings.rb +10 -0
- data/lib/tdlib/types/update/chat_order.rb +11 -0
- data/lib/tdlib/types/update/chat_photo.rb +10 -0
- data/lib/tdlib/types/update/chat_read_inbox.rb +12 -0
- data/lib/tdlib/types/update/chat_read_outbox.rb +10 -0
- data/lib/tdlib/types/update/chat_reply_markup.rb +13 -0
- data/lib/tdlib/types/update/chat_title.rb +10 -0
- data/lib/tdlib/types/update/chat_unread_mention_count.rb +10 -0
- data/lib/tdlib/types/update/connection_state.rb +8 -0
- data/lib/tdlib/types/update/delete_messages.rb +16 -0
- data/lib/tdlib/types/update/favorite_stickers.rb +8 -0
- data/lib/tdlib/types/update/file.rb +8 -0
- data/lib/tdlib/types/update/file_generation_start.rb +17 -0
- data/lib/tdlib/types/update/file_generation_stop.rb +8 -0
- data/lib/tdlib/types/update/installed_sticker_sets.rb +10 -0
- data/lib/tdlib/types/update/language_pack_strings.rb +12 -0
- data/lib/tdlib/types/update/message_content.rb +12 -0
- data/lib/tdlib/types/update/message_content_opened.rb +12 -0
- data/lib/tdlib/types/update/message_edited.rb +15 -0
- data/lib/tdlib/types/update/message_mention_read.rb +12 -0
- data/lib/tdlib/types/update/message_send_acknowledged.rb +14 -0
- data/lib/tdlib/types/update/message_send_failed.rb +16 -0
- data/lib/tdlib/types/update/message_send_succeeded.rb +11 -0
- data/lib/tdlib/types/update/message_views.rb +12 -0
- data/lib/tdlib/types/update/new_callback_query.rb +18 -0
- data/lib/tdlib/types/update/new_chat.rb +10 -0
- data/lib/tdlib/types/update/new_chosen_inline_result.rb +16 -0
- data/lib/tdlib/types/update/new_custom_event.rb +8 -0
- data/lib/tdlib/types/update/new_custom_query.rb +12 -0
- data/lib/tdlib/types/update/new_inline_callback_query.rb +16 -0
- data/lib/tdlib/types/update/new_inline_query.rb +16 -0
- data/lib/tdlib/types/update/new_message.rb +12 -0
- data/lib/tdlib/types/update/new_pre_checkout_query.rb +22 -0
- data/lib/tdlib/types/update/new_shipping_query.rb +15 -0
- data/lib/tdlib/types/update/option.rb +10 -0
- data/lib/tdlib/types/update/recent_stickers.rb +11 -0
- data/lib/tdlib/types/update/saved_animations.rb +8 -0
- data/lib/tdlib/types/update/scope_notification_settings.rb +10 -0
- data/lib/tdlib/types/update/secret_chat.rb +9 -0
- data/lib/tdlib/types/update/service_notification.rb +13 -0
- data/lib/tdlib/types/update/supergroup.rb +9 -0
- data/lib/tdlib/types/update/supergroup_full_info.rb +10 -0
- data/lib/tdlib/types/update/terms_of_service.rb +12 -0
- data/lib/tdlib/types/update/trending_sticker_sets.rb +8 -0
- data/lib/tdlib/types/update/unread_chat_count.rb +16 -0
- data/lib/tdlib/types/update/unread_message_count.rb +11 -0
- data/lib/tdlib/types/update/user.rb +9 -0
- data/lib/tdlib/types/update/user_chat_action.rb +12 -0
- data/lib/tdlib/types/update/user_full_info.rb +10 -0
- data/lib/tdlib/types/update/user_privacy_setting_rules.rb +10 -0
- data/lib/tdlib/types/update/user_status.rb +10 -0
- data/lib/tdlib/types/user.rb +41 -0
- data/lib/tdlib/types/user_full_info.rb +21 -0
- data/lib/tdlib/types/user_privacy_setting.rb +12 -0
- data/lib/tdlib/types/user_privacy_setting/allow_calls.rb +5 -0
- data/lib/tdlib/types/user_privacy_setting/allow_chat_invites.rb +5 -0
- data/lib/tdlib/types/user_privacy_setting/show_status.rb +5 -0
- data/lib/tdlib/types/user_privacy_setting_rule.rb +15 -0
- data/lib/tdlib/types/user_privacy_setting_rule/allow_all.rb +5 -0
- data/lib/tdlib/types/user_privacy_setting_rule/allow_contacts.rb +5 -0
- data/lib/tdlib/types/user_privacy_setting_rule/allow_users.rb +8 -0
- data/lib/tdlib/types/user_privacy_setting_rule/restrict_all.rb +5 -0
- data/lib/tdlib/types/user_privacy_setting_rule/restrict_contacts.rb +5 -0
- data/lib/tdlib/types/user_privacy_setting_rule/restrict_users.rb +8 -0
- data/lib/tdlib/types/user_privacy_setting_rules.rb +11 -0
- data/lib/tdlib/types/user_profile_photos.rb +10 -0
- data/lib/tdlib/types/user_status.rb +15 -0
- data/lib/tdlib/types/user_status/empty.rb +5 -0
- data/lib/tdlib/types/user_status/last_month.rb +5 -0
- data/lib/tdlib/types/user_status/last_week.rb +5 -0
- data/lib/tdlib/types/user_status/offline.rb +8 -0
- data/lib/tdlib/types/user_status/online.rb +8 -0
- data/lib/tdlib/types/user_status/recently.rb +5 -0
- data/lib/tdlib/types/user_type.rb +14 -0
- data/lib/tdlib/types/user_type/bot.rb +18 -0
- data/lib/tdlib/types/user_type/deleted.rb +7 -0
- data/lib/tdlib/types/user_type/regular.rb +5 -0
- data/lib/tdlib/types/user_type/unknown.rb +7 -0
- data/lib/tdlib/types/users.rb +10 -0
- data/lib/tdlib/types/validated_order_info.rb +11 -0
- data/lib/tdlib/types/venue.rb +19 -0
- data/lib/tdlib/types/video.rb +24 -0
- data/lib/tdlib/types/video_note.rb +15 -0
- data/lib/tdlib/types/voice_note.rb +16 -0
- data/lib/tdlib/types/wallpaper.rb +14 -0
- data/lib/tdlib/types/wallpapers.rb +8 -0
- data/lib/tdlib/types/web_page.rb +51 -0
- data/lib/tdlib/types/web_page_instant_view.rb +11 -0
- data/lib/tdlib/update_handler.rb +36 -0
- data/lib/tdlib/update_manager.rb +21 -11
- data/lib/tdlib/version.rb +1 -1
- data/spec/integration/tdlib_spec.rb +20 -15
- data/tdlib-ruby.gemspec +7 -12
- metadata +720 -9
- data/lib/tdlib/utils.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c9e152ea091aaa6715f0ce9188a89f59c34e0c60600344ddb37454409956c99
|
4
|
+
data.tar.gz: 83c128d9e58d4e0fdac3c04a071e5646090d77ca06be93829af437f33174a77c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a1bc253a33dac9e246fb897611de97436eecbdafb15cee2c4c4b7dc8630b2bd4fd5e40e8ec7085c0f6e752173dde0b56bddca4a6fbd64dd9b5e02eff47eb71d
|
7
|
+
data.tar.gz: 6f9e04ecea637478035631306ea0ea8e25e78f8d5fc9e89e51d0a538ff1425b2102db6c17432558964a4d0edf6df5c10df77939b71042202667d65d8e1142cb5
|
data/.gitignore
CHANGED
data/.gitmodules
ADDED
data/.travis.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 2.3.
|
4
|
-
- 2.
|
3
|
+
- 2.3.8
|
4
|
+
- 2.6.0
|
5
5
|
addons:
|
6
6
|
apt:
|
7
7
|
sources:
|
@@ -20,7 +20,6 @@ env:
|
|
20
20
|
secure: DmAoRsr+dTPVNs486nBXzChjzCCVdoxfmSbvqMBBl0v8uuUIZD1rSfYKcEaL5pmE7vgYq3X+3Dk0gf4ef/p2xPVKqFKrkBiF/7t06WgQTH7003gHMLq3aC7R9+1xvqJDzpoc6UB59Y1fOJBe5YfqDuw1dT9a46tzY2uzoVpEpbN8M/hssaKf6Wuzvpz5yekFeXq2raPwi3aOqvkSG+ODoacVdYQgJ4Vn0//CI2HzWijkQCvdsefWQUKkbgtuLWRp3UNy8AEhVWzQnTcSM7oc+MwMsOI/90DZkTP5n2WJl/CFTM5b70VyrIciG92SvTAhhBo/p7t3QBJa6kJMPXAHh5q+3wqVQA411+CoVF48bO5rKjKY3Ply49uqAzVJRh+Tkhf5uC1pHiZ6QKGxu1Czde+mKItBpaDmJFmQi0CSdv2WYXLnJWOQIO6vc2P3liwpMDRDyaGWOQtUYS+gHAlRbD4NPycIkGjkcjmLMqSEEO1TdCpM+CYwTvNTkRS+9HrWXZNdEfWORDYHgYohoIP6kY6XWSgunUb6F6pVxLoPWJNEBEVuIMZeOa/s9oklxBzD5XXIzBx4QsPYanvfxoN1uOcXlBXbOGqwiqb+urokNDw+BzWhbA+xY03U2+yO0Ujh3HQDyMDtrXEQfaPC0SxpEvIINVYwznG4sMKvbOaCVSo=
|
21
21
|
before_install:
|
22
22
|
- set -e
|
23
|
-
- git clone https://github.com/tdlib/td
|
24
23
|
- cd td
|
25
24
|
- mkdir -p build
|
26
25
|
- cd build
|
data/ChangeLog.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
### 2.0.0 / 2019-02-08
|
2
|
+
|
3
|
+
* Generated types and client functions
|
4
|
+
* Async handlers
|
5
|
+
* Use ffi instead of fiddle
|
6
|
+
* Use Concurrent::Promises
|
7
|
+
* TD errors handling in promises
|
8
|
+
* Add use_file_database setting to config
|
9
|
+
|
1
10
|
### 1.0.0 / 2018-05-27
|
2
11
|
|
3
12
|
* Return promises from TD::Client#broadcast
|
data/README.md
CHANGED
@@ -23,6 +23,13 @@ http://rpms.southbridge.ru/rhel7/stable/SRPMS/
|
|
23
23
|
|
24
24
|
http://rpms.southbridge.ru/rhel6/stable/SRPMS/
|
25
25
|
|
26
|
+
## Compatibility table
|
27
|
+
|
28
|
+
| Gem Version | | tdlib version |
|
29
|
+
|:-------------:|:-:| :-----------: |
|
30
|
+
| 1.x | → | 1.0 - 1.2 |
|
31
|
+
| 2.0 | → | 1.3 |
|
32
|
+
|
26
33
|
## Install
|
27
34
|
|
28
35
|
Add to your gemfile:
|
@@ -35,7 +42,7 @@ and run *bundle install*.
|
|
35
42
|
|
36
43
|
Or just run *gem install tdlib-ruby*
|
37
44
|
|
38
|
-
## Basic example
|
45
|
+
## Basic authentication example
|
39
46
|
|
40
47
|
```ruby
|
41
48
|
require 'tdlib-ruby'
|
@@ -54,59 +61,52 @@ client = TD::Client.new
|
|
54
61
|
begin
|
55
62
|
state = nil
|
56
63
|
|
57
|
-
client.on(
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
64
|
+
client.on(TD::Types::Update::AuthorizationState) do |update|
|
65
|
+
state = case update.authorization_state
|
66
|
+
when TD::Types::AuthorizationState::WaitPhoneNumber
|
67
|
+
:wait_phone_number
|
68
|
+
when TD::Types::AuthorizationState::WaitCode
|
69
|
+
:wait_code
|
70
|
+
when TD::Types::AuthorizationState::WaitPassword
|
71
|
+
:wait_password
|
72
|
+
when TD::Types::AuthorizationState::Ready
|
73
|
+
:ready
|
74
|
+
else
|
75
|
+
nil
|
76
|
+
end
|
70
77
|
end
|
78
|
+
|
79
|
+
client.connect
|
71
80
|
|
72
81
|
loop do
|
73
82
|
case state
|
74
|
-
when :
|
75
|
-
|
83
|
+
when :wait_phone_number
|
84
|
+
puts 'Please, enter your phone number:'
|
76
85
|
phone = STDIN.gets.strip
|
77
|
-
|
78
|
-
'@type' => 'setAuthenticationPhoneNumber',
|
79
|
-
'phone_number' => phone
|
80
|
-
}
|
81
|
-
client.broadcast_and_receive(params)
|
86
|
+
client.set_authentication_phone_number(phone).wait
|
82
87
|
when :wait_code
|
83
|
-
|
88
|
+
puts 'Please, enter code from SMS:'
|
84
89
|
code = STDIN.gets.strip
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
client.
|
90
|
+
client.check_authentication_code(code).wait
|
91
|
+
when :wait_password
|
92
|
+
puts 'Please, enter 2FA password:'
|
93
|
+
password = STDIN.gets.strip
|
94
|
+
client.check_authentication_password(password).wait
|
90
95
|
when :ready
|
91
|
-
@me =
|
96
|
+
client.get_me.then { |user| @me = user }.rescue { |err| puts "error: #{err}" }.wait
|
92
97
|
break
|
93
98
|
end
|
99
|
+
sleep 0.1
|
94
100
|
end
|
95
101
|
|
96
102
|
ensure
|
97
|
-
client.
|
103
|
+
client.dispose
|
98
104
|
end
|
99
105
|
|
100
106
|
p @me
|
101
107
|
```
|
102
108
|
|
103
|
-
|
104
|
-
|
105
|
-
From version 1.0 TD::Client##broadcast returns [Concurrent::Promise](http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promise.html) object.
|
106
|
-
|
107
|
-
```ruby
|
108
|
-
me = client.broadcast('@type' => 'getMe').then { |result| puts result }.rescue { |error| puts error }.value
|
109
|
-
```
|
109
|
+
Client methods are being executed asynchronously and return Concurrent::Promises::Future (see: https://github.com/ruby-concurrency/concurrent-ruby/blob/master/docs-source/promises.in.md).
|
110
110
|
|
111
111
|
## Configuration
|
112
112
|
|
@@ -118,17 +118,18 @@ TD.configure do |config|
|
|
118
118
|
config.client.api_id = 12345
|
119
119
|
config.client.api_hash = 'your_api_hash'
|
120
120
|
config.client.use_test_dc = true # default: false
|
121
|
-
config.database_directory = 'path/to/db/dir' # default: "#{Dir.home}/.tdlib-ruby/db"
|
122
|
-
config.files_directory = 'path/to/files/dir' # default: "#{Dir.home}/.tdlib-ruby/files"
|
121
|
+
config.client.database_directory = 'path/to/db/dir' # default: "#{Dir.home}/.tdlib-ruby/db"
|
122
|
+
config.client.files_directory = 'path/to/files/dir' # default: "#{Dir.home}/.tdlib-ruby/files"
|
123
|
+
config.client.use_file_database = true # default: true
|
123
124
|
config.client.use_chat_info_database = true # default: true
|
124
|
-
config.use_secret_chats = true # default: true
|
125
|
-
config.use_message_database = true # default: true
|
126
|
-
config.system_language_code = 'ru' # default: 'en'
|
127
|
-
config.device_model = 'Some device model' # default: 'Ruby TD client'
|
128
|
-
config.system_version = '42' # default: 'Unknown'
|
129
|
-
config.application_version = '1.0' # default: '1.0'
|
130
|
-
config.enable_storage_optimizer = true # default: true
|
131
|
-
config.ignore_file_names = true # default: false
|
125
|
+
config.client.use_secret_chats = true # default: true
|
126
|
+
config.client.use_message_database = true # default: true
|
127
|
+
config.client.system_language_code = 'ru' # default: 'en'
|
128
|
+
config.client.device_model = 'Some device model' # default: 'Ruby TD client'
|
129
|
+
config.client.system_version = '42' # default: 'Unknown'
|
130
|
+
config.client.application_version = '1.0' # default: '1.0'
|
131
|
+
config.client.enable_storage_optimizer = true # default: true
|
132
|
+
config.client.ignore_file_names = true # default: false
|
132
133
|
end
|
133
134
|
```
|
134
135
|
|
@@ -160,3 +161,5 @@ TD::Client.new(database_directory: 'will override value from config',
|
|
160
161
|
## Authors
|
161
162
|
|
162
163
|
The gem is designed by [Southbridge](https://southbridge.io)
|
164
|
+
|
165
|
+
Typeization made by [Yuri Mikhaylov](https://github.com/yurijmi)
|
data/bin/build
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'etc'
|
4
|
+
|
5
|
+
`
|
6
|
+
set -e
|
7
|
+
cd td
|
8
|
+
mkdir -p build
|
9
|
+
cd build
|
10
|
+
cmake -DCMAKE_BUILD_TYPE=Release #{'-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl@1.1/' if RbConfig::CONFIG['host_os'] =~ /darwin|mac os/} ..
|
11
|
+
cmake --build . -j #{Etc.nprocessors}
|
12
|
+
`
|
data/bin/parser
ADDED
@@ -0,0 +1,447 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'active_support/all'
|
4
|
+
|
5
|
+
AUTOLOAD_BASE_DIR = 'tdlib/types'
|
6
|
+
TD_API_TL_LOCATION = File.join(File.expand_path("../../", __FILE__), %w(td td generate scheme td_api.tl))
|
7
|
+
|
8
|
+
def parse_tl_type(type)
|
9
|
+
if (vector = type.scan(/[vV]ector<(.*)>/)).length > 0
|
10
|
+
"TD::Types::Array.of(#{parse_tl_type(vector[0][0])})"
|
11
|
+
elsif type.match?(/[iI]nt\d\d/)
|
12
|
+
'TD::Types::Integer'
|
13
|
+
elsif type.match?(/[dD]ouble/)
|
14
|
+
'TD::Types::Float'
|
15
|
+
elsif type.match?(/[bB]ytes/)
|
16
|
+
'TD::Types::String'
|
17
|
+
else
|
18
|
+
"TD::Types::#{type.camelcase}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def parse_argument_description(argument, description)
|
23
|
+
statements = description.split('; ')[1..-1]
|
24
|
+
|
25
|
+
if statements.length == 0
|
26
|
+
statements = description.split(', ')[1..-1]
|
27
|
+
end
|
28
|
+
|
29
|
+
optional = nil
|
30
|
+
|
31
|
+
if statements.length > 0
|
32
|
+
statements.each do |statement|
|
33
|
+
statement.downcase!
|
34
|
+
|
35
|
+
if statement.match?(/(can be null|may be null|can be empty|may be empty|optional|if empty|empty until|empty for|if available)/)
|
36
|
+
optional = true
|
37
|
+
elsif statement.match?(/(must be non-empty)/)
|
38
|
+
optional = false
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
{
|
44
|
+
argument => {
|
45
|
+
description: description,
|
46
|
+
optional: optional
|
47
|
+
}
|
48
|
+
}
|
49
|
+
end
|
50
|
+
|
51
|
+
def parse_tl_entry(tl_entry)
|
52
|
+
info = {}
|
53
|
+
arguments = {}
|
54
|
+
|
55
|
+
# A fix for multiline comments
|
56
|
+
tl_entry.gsub!("\n//-", " ")
|
57
|
+
|
58
|
+
tl_entry.strip!
|
59
|
+
|
60
|
+
tl_entry.split("\n").each do |line|
|
61
|
+
if line.start_with?('//')
|
62
|
+
line.sub('//@', '').split(' @').each do |at_statement|
|
63
|
+
if at_statement.start_with?('class')
|
64
|
+
info[:class] = at_statement[6..-1]
|
65
|
+
elsif at_statement.start_with?('description')
|
66
|
+
info[:description] = at_statement[12..-1]
|
67
|
+
elsif at_statement.start_with?('param_description')
|
68
|
+
arguments.deep_merge!(parse_argument_description('description', at_statement[18..-1]))
|
69
|
+
else
|
70
|
+
argument = at_statement.split(' ')[0]
|
71
|
+
description = at_statement[(argument.length + 1)..-1]
|
72
|
+
|
73
|
+
arguments.deep_merge!(parse_argument_description(argument, description))
|
74
|
+
end
|
75
|
+
end
|
76
|
+
else
|
77
|
+
args, super_class = line.sub(';', '').split(" = ")
|
78
|
+
args = args.split(' ')
|
79
|
+
|
80
|
+
info[:class] = args[0]
|
81
|
+
info[:super_class] = super_class
|
82
|
+
|
83
|
+
args = (args[1..-1] || []).map do |a|
|
84
|
+
arg, type = a.split(':')
|
85
|
+
|
86
|
+
{ arg => { type: parse_tl_type(type) } }
|
87
|
+
end.reduce(&:merge) || {}
|
88
|
+
|
89
|
+
arguments.deep_merge!(args)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
if !info[:super_class] or info[:class].downcase == info[:super_class].downcase
|
94
|
+
info[:super_class] = 'Base'
|
95
|
+
end
|
96
|
+
|
97
|
+
# Setting all arguments to optional, if at least one argument stated to be required
|
98
|
+
# noinspection RubySimplifyBooleanInspection
|
99
|
+
if arguments.any? { |_,v| v[:optional] == false }
|
100
|
+
arguments.select { |_,v| v[:optional] == nil }.each { |k,_| arguments[k][:optional] = true }
|
101
|
+
end
|
102
|
+
|
103
|
+
info[:arguments] = arguments
|
104
|
+
|
105
|
+
info
|
106
|
+
end
|
107
|
+
|
108
|
+
def normalize_class_name(class_name, super_class_name)
|
109
|
+
class_name = class_name.camelcase
|
110
|
+
|
111
|
+
case super_class_name
|
112
|
+
when 'ChatEventAction'
|
113
|
+
class_name.sub('ChatEvent', '')
|
114
|
+
when 'InputMessageContent'
|
115
|
+
class_name.sub('InputMessage', '')
|
116
|
+
when 'MessageContent'
|
117
|
+
class_name.sub('Message', '')
|
118
|
+
else
|
119
|
+
class_name
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def build_hierarchy(classes)
|
124
|
+
hierarchy = {}
|
125
|
+
|
126
|
+
classes.each do |c|
|
127
|
+
(hierarchy[c[:super_class].camelcase] ||= []).push(normalize_class_name(c[:class], c[:super_class]))
|
128
|
+
end
|
129
|
+
|
130
|
+
hierarchy
|
131
|
+
end
|
132
|
+
|
133
|
+
def build_lookup_table(classes)
|
134
|
+
lookup_table = {}
|
135
|
+
|
136
|
+
classes.each do |c|
|
137
|
+
class_name = normalize_class_name(c[:class], c[:super_class])
|
138
|
+
super_class_name = c[:super_class].camelcase
|
139
|
+
|
140
|
+
unless super_class_name == 'Base'
|
141
|
+
class_name = "#{super_class_name}::#{class_name.sub(super_class_name, '')}"
|
142
|
+
end
|
143
|
+
|
144
|
+
lookup_table[c[:class]] = class_name
|
145
|
+
end
|
146
|
+
|
147
|
+
lookup_table
|
148
|
+
end
|
149
|
+
|
150
|
+
# Splits tl file into usable chunks. Usually starts with a SuperClass followed by subclasses.
|
151
|
+
def split_tl_file(tl_file, range = 0..-1)
|
152
|
+
# A fix for some entries (mainly chatAction ones) having a different structure from the rest
|
153
|
+
tl_file.gsub!(";\n//", ";\n\n//")
|
154
|
+
|
155
|
+
tl_file.split("\n\n\n")[range].map { |e| e.split("\n\n") }.flatten
|
156
|
+
end
|
157
|
+
|
158
|
+
# Partially taken from ActionView's word_wrap. Sowwy ;w;
|
159
|
+
def wrap_comment(comment, indent = " ", line_width: 117,
|
160
|
+
start_sequence: "#{indent}# ",
|
161
|
+
first_start_sequence: start_sequence,
|
162
|
+
break_sequence: "\n#{indent}# ")
|
163
|
+
comment.split('. ').map.with_index do |sentence, i|
|
164
|
+
this_start_sequence = i == 0 ? first_start_sequence : start_sequence
|
165
|
+
|
166
|
+
line = "#{this_start_sequence}#{sentence}.".split("\n").collect!.with_index do |line, j|
|
167
|
+
this_line_width = j == 0 ? line_width + 2 : line_width
|
168
|
+
|
169
|
+
line.length > this_line_width ? line.gsub(/(.{1,#{this_line_width}})(\s+|$)/, "\\1#{break_sequence}") : line
|
170
|
+
end.join(break_sequence)
|
171
|
+
|
172
|
+
if line.end_with?(break_sequence)
|
173
|
+
line = line[0..-(break_sequence.length + 1)]
|
174
|
+
end
|
175
|
+
|
176
|
+
line
|
177
|
+
end.join("\n")
|
178
|
+
end
|
179
|
+
|
180
|
+
def wrap_params(param_string, max_length, indent_num)
|
181
|
+
if param_string.length > max_length
|
182
|
+
param_string.gsub(/(.{1,#{max_length}})(\s+|$)/, "\\1\n#{' ' * indent_num}").strip
|
183
|
+
else
|
184
|
+
param_string
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
def type_to_comment_type(type)
|
189
|
+
type.gsub('TD::Types::Array.of(', 'Array<').gsub(')', '>').
|
190
|
+
gsub('TD::Types::Integer', 'Integer').
|
191
|
+
gsub('TD::Types::Float', 'Float').
|
192
|
+
gsub('TD::Types::String', 'String').
|
193
|
+
gsub('TD::Types::Bool', 'Boolean')
|
194
|
+
end
|
195
|
+
|
196
|
+
# Generates YARD documentation comment for each param
|
197
|
+
def attrs_to_yard_comment(attrs, key = 'attr')
|
198
|
+
attrs.map do |attr, info|
|
199
|
+
type = type_to_comment_type(info[:type])
|
200
|
+
description = info[:description].gsub(@lookup_regex) do |m|
|
201
|
+
@lookup_table[m.strip] ? "#{m[0]}{TD::Types::#{@lookup_table[m.strip]}}#{m[-1]}" : m
|
202
|
+
end
|
203
|
+
|
204
|
+
wrap_comment(description, " ",
|
205
|
+
first_start_sequence: " # @#{key} #{attr} [#{type}#{", nil" if info[:optional]}] ",
|
206
|
+
start_sequence: " # ", break_sequence: "\n # ")
|
207
|
+
end.join("\n")
|
208
|
+
end
|
209
|
+
|
210
|
+
puts "Creating types directory"
|
211
|
+
|
212
|
+
FileUtils.mkdir_p "types"
|
213
|
+
|
214
|
+
puts "Writing Base class"
|
215
|
+
|
216
|
+
klass = <<-RUBY
|
217
|
+
module TD::Types
|
218
|
+
class Base < Dry::Struct
|
219
|
+
# throw an error when unknown keys provided
|
220
|
+
input input.strict
|
221
|
+
|
222
|
+
# convert string keys to symbols
|
223
|
+
transform_keys(&:to_sym)
|
224
|
+
|
225
|
+
# resolve default types on nil
|
226
|
+
transform_types do |type|
|
227
|
+
if type.default?
|
228
|
+
type.constructor do |value|
|
229
|
+
value.nil? ? Dry::Types::Undefined : value
|
230
|
+
end
|
231
|
+
else
|
232
|
+
type
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
def to_hash
|
237
|
+
{ '@type' => LOOKUP_TABLE.key(self.class.name.sub('TD::Types::', '')) }.merge(super)
|
238
|
+
end
|
239
|
+
alias_method :to_h, :to_hash
|
240
|
+
|
241
|
+
def to_json(*args)
|
242
|
+
to_hash.to_json(*args)
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
246
|
+
RUBY
|
247
|
+
|
248
|
+
File.write 'lib/tdlib/types/base.rb', klass
|
249
|
+
|
250
|
+
puts "Parsing td_api.tl"
|
251
|
+
|
252
|
+
# Reading the TL file and splitting it into classes and functions
|
253
|
+
@classes, @functions = File.read(TD_API_TL_LOCATION).split("\n\n---functions---\n\n")
|
254
|
+
|
255
|
+
# First entry in td_api.tl is typecasting, it's worthless for us.
|
256
|
+
# Last entry before functions is a testing class, once again worthless
|
257
|
+
@classes = split_tl_file(@classes, 1..-2)
|
258
|
+
|
259
|
+
# Last function in td_api.tl is for testing, another worthless thing for us
|
260
|
+
@functions = split_tl_file(@functions, 0..-2)
|
261
|
+
|
262
|
+
puts "Converting classes into Ruby types"
|
263
|
+
|
264
|
+
@classes = @classes.map { |c| parse_tl_entry(c) }
|
265
|
+
@class_names = @classes.map { |c| normalize_class_name(c[:class], c[:super_class]) }
|
266
|
+
@class_hierarchy = build_hierarchy(@classes)
|
267
|
+
@lookup_table = build_lookup_table(@classes)
|
268
|
+
@lookup_regex = Regexp.union(@lookup_table.keys.select { |k| k.match?(/[a-z]+[A-Z][a-z]+/) }.map { |k| /\W#{k}\W/ })
|
269
|
+
|
270
|
+
@classes.each do |class_info|
|
271
|
+
class_name = normalize_class_name(class_info[:class], class_info[:super_class])
|
272
|
+
attributes = class_info[:arguments]
|
273
|
+
description = class_info[:description]
|
274
|
+
super_class_name = class_info[:super_class].camelcase
|
275
|
+
|
276
|
+
if (subclasses = @class_hierarchy[class_info[:class]])
|
277
|
+
autoload_statements = <<-RUBY
|
278
|
+
%w[
|
279
|
+
#{subclasses.map { |c| c.sub(class_name, '').underscore }.join("\n ")}
|
280
|
+
].each do |type|
|
281
|
+
autoload TD::Types.camelize(type), "#{AUTOLOAD_BASE_DIR}/#{class_name.underscore}/\#{type}"
|
282
|
+
end
|
283
|
+
RUBY
|
284
|
+
else
|
285
|
+
autoload_statements = ""
|
286
|
+
end
|
287
|
+
|
288
|
+
if super_class_name == 'Base'
|
289
|
+
file_name = class_name.underscore
|
290
|
+
class_name = "#{class_name} < Base"
|
291
|
+
else
|
292
|
+
file_name = "#{super_class_name.underscore}/#{class_name.sub(super_class_name, '').underscore}"
|
293
|
+
class_name = "#{super_class_name}::#{class_name.sub(super_class_name, '')} < #{super_class_name}"
|
294
|
+
|
295
|
+
FileUtils.mkdir_p "types/#{super_class_name.underscore}"
|
296
|
+
end
|
297
|
+
|
298
|
+
if attributes.blank?
|
299
|
+
attributes_doc = ""
|
300
|
+
attributes = ""
|
301
|
+
else
|
302
|
+
attributes_doc = "\n #\n" + attrs_to_yard_comment(attributes, 'attr')
|
303
|
+
|
304
|
+
attributes = "\n " + attributes.map do |attr, info|
|
305
|
+
"attribute :#{attr}, #{info[:type]}#{ ".optional.default(nil)" if info[:optional] }"
|
306
|
+
end.join("\n ")
|
307
|
+
end
|
308
|
+
|
309
|
+
unless description.blank?
|
310
|
+
description = "\n#{wrap_comment(description, " ")}"
|
311
|
+
end
|
312
|
+
|
313
|
+
klass = <<-RUBY
|
314
|
+
module TD::Types#{description}#{attributes_doc}
|
315
|
+
class #{class_name}#{attributes}
|
316
|
+
#{autoload_statements} end
|
317
|
+
end
|
318
|
+
RUBY
|
319
|
+
|
320
|
+
File.write "lib/tdlib/types/#{file_name}.rb", klass
|
321
|
+
end
|
322
|
+
|
323
|
+
puts "Generating Types class"
|
324
|
+
|
325
|
+
lt_max_length = @lookup_table.max_by { |k,_| k.length }[0].length
|
326
|
+
|
327
|
+
lookup_table = @lookup_table.map do |k,v|
|
328
|
+
indent = " " * (lt_max_length - k.length + 1)
|
329
|
+
|
330
|
+
"'#{k}'#{indent}=> '#{v}'"
|
331
|
+
end
|
332
|
+
|
333
|
+
klass = <<-RUBY
|
334
|
+
require 'dry-struct'
|
335
|
+
require 'dry-types'
|
336
|
+
|
337
|
+
module TD::Types
|
338
|
+
include Dry::Types.module
|
339
|
+
|
340
|
+
LOOKUP_TABLE = {
|
341
|
+
#{lookup_table.join(",\n ")}
|
342
|
+
}.freeze
|
343
|
+
|
344
|
+
module_function
|
345
|
+
|
346
|
+
# Recursively wraps a hash into typed classes
|
347
|
+
def wrap(object)
|
348
|
+
# Wrapping each entry in array
|
349
|
+
if object.kind_of?(::Array)
|
350
|
+
object.map { |o| wrap(o) }
|
351
|
+
elsif object.kind_of?(::Hash)
|
352
|
+
type = object.delete('@type')
|
353
|
+
|
354
|
+
object.each do |key, val|
|
355
|
+
if val.respond_to?(:each)
|
356
|
+
object[key] = wrap(val)
|
357
|
+
end
|
358
|
+
end
|
359
|
+
|
360
|
+
unless type
|
361
|
+
return object
|
362
|
+
end
|
363
|
+
|
364
|
+
if (klass = LOOKUP_TABLE[type])
|
365
|
+
const_get(klass).new(object)
|
366
|
+
else
|
367
|
+
raise ArgumentError.new("Can't find class for \#{type}")
|
368
|
+
end
|
369
|
+
else
|
370
|
+
object
|
371
|
+
end
|
372
|
+
end
|
373
|
+
|
374
|
+
# Simple implementation for internal use only.
|
375
|
+
def camelize(str)
|
376
|
+
str.gsub(/(?:_|(\\/)|^)([a-z\\d]*)/i) { "\#{$1}\#{$2.capitalize}" }
|
377
|
+
end
|
378
|
+
|
379
|
+
%w[
|
380
|
+
#{(@class_hierarchy["Base"].map { |c| c.underscore } + ['base']).sort_by { |c| c }.join("\n ")}
|
381
|
+
].each do |type|
|
382
|
+
autoload camelize(type), "#{AUTOLOAD_BASE_DIR}/\#{type}"
|
383
|
+
end
|
384
|
+
end
|
385
|
+
RUBY
|
386
|
+
|
387
|
+
File.write 'lib/tdlib/types.rb', klass
|
388
|
+
|
389
|
+
puts "Converting functions"
|
390
|
+
|
391
|
+
@functions = @functions.map { |c| parse_tl_entry(c) }.sort_by { |c| c[:class] }
|
392
|
+
|
393
|
+
# Converts TDApi functions into methods. Still need human touch haha
|
394
|
+
@functions = @functions.map do |func|
|
395
|
+
method_name = func[:class].underscore
|
396
|
+
params = func[:arguments]
|
397
|
+
description = func[:description]
|
398
|
+
# TODO: Replace InputMessageContent and others (see #normalize_class_name)
|
399
|
+
return_class = type_to_comment_type("TD::Types::#{func[:super_class].camelcase}")
|
400
|
+
|
401
|
+
param_max_length = params.merge({'@type' => nil}).max_by { |k,_| k.length }[0].length
|
402
|
+
|
403
|
+
if params.blank?
|
404
|
+
params_doc = ""
|
405
|
+
method_params = ""
|
406
|
+
func_params = ""
|
407
|
+
else
|
408
|
+
params_doc = "\n" + attrs_to_yard_comment(params, 'param')
|
409
|
+
|
410
|
+
# TODO: Fix mixup of =nil params (only in set_password)
|
411
|
+
method_params = params.map do |attr, info|
|
412
|
+
"#{attr}#{ " = nil" if info[:optional] }"
|
413
|
+
end.join(", ")
|
414
|
+
|
415
|
+
method_params = "(#{wrap_params(method_params, 118 - (method_name.length + 5), method_name.length + 7)})"
|
416
|
+
|
417
|
+
func_params = ",\n " + params.map do |attr, info|
|
418
|
+
indent = " " * (param_max_length - attr.length + 1)
|
419
|
+
|
420
|
+
"'#{attr}'#{indent}=> #{attr}"
|
421
|
+
end.join(",\n ")
|
422
|
+
end
|
423
|
+
|
424
|
+
unless description.blank?
|
425
|
+
description = wrap_comment(description, " ")
|
426
|
+
end
|
427
|
+
|
428
|
+
<<-RUBY
|
429
|
+
#{description}
|
430
|
+
##{params_doc}
|
431
|
+
# @return [#{return_class}]
|
432
|
+
def #{method_name}#{method_params}
|
433
|
+
broadcast('@type'#{" " * (param_max_length - 4)}=> '#{func[:class]}'#{func_params})
|
434
|
+
end
|
435
|
+
RUBY
|
436
|
+
end
|
437
|
+
|
438
|
+
klass = <<-RUBY
|
439
|
+
# This is a generated module from current TDLib scheme
|
440
|
+
# It contains all available TDLib methods
|
441
|
+
module TD::ClientMethods
|
442
|
+
#{@functions.join(" \n")}end
|
443
|
+
RUBY
|
444
|
+
|
445
|
+
File.write 'lib/tdlib/client_methods.rb', klass
|
446
|
+
|
447
|
+
puts "Done. Please look through client_methods.rb carefully, especially the set_password method!"
|