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.
Files changed (670) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +2 -3
  5. data/ChangeLog.md +9 -0
  6. data/README.md +49 -46
  7. data/bin/build +12 -0
  8. data/bin/parser +447 -0
  9. data/lib/tdlib-ruby.rb +4 -1
  10. data/lib/tdlib/api.rb +20 -15
  11. data/lib/tdlib/client.rb +121 -123
  12. data/lib/tdlib/client_methods.rb +3474 -0
  13. data/lib/tdlib/errors.rb +29 -5
  14. data/lib/tdlib/types.rb +884 -0
  15. data/lib/tdlib/types/account_ttl.rb +10 -0
  16. data/lib/tdlib/types/address.rb +18 -0
  17. data/lib/tdlib/types/animation.rb +21 -0
  18. data/lib/tdlib/types/animations.rb +8 -0
  19. data/lib/tdlib/types/audio.rb +22 -0
  20. data/lib/tdlib/types/authentication_code_info.rb +15 -0
  21. data/lib/tdlib/types/authentication_code_type.rb +13 -0
  22. data/lib/tdlib/types/authentication_code_type/call.rb +8 -0
  23. data/lib/tdlib/types/authentication_code_type/flash_call.rb +9 -0
  24. data/lib/tdlib/types/authentication_code_type/sms.rb +8 -0
  25. data/lib/tdlib/types/authentication_code_type/telegram_message.rb +8 -0
  26. data/lib/tdlib/types/authorization_state.rb +18 -0
  27. data/lib/tdlib/types/authorization_state/closed.rb +9 -0
  28. data/lib/tdlib/types/authorization_state/closing.rb +7 -0
  29. data/lib/tdlib/types/authorization_state/logging_out.rb +5 -0
  30. data/lib/tdlib/types/authorization_state/ready.rb +6 -0
  31. data/lib/tdlib/types/authorization_state/wait_code.rb +13 -0
  32. data/lib/tdlib/types/authorization_state/wait_encryption_key.rb +8 -0
  33. data/lib/tdlib/types/authorization_state/wait_password.rb +13 -0
  34. data/lib/tdlib/types/authorization_state/wait_phone_number.rb +5 -0
  35. data/lib/tdlib/types/authorization_state/wait_tdlib_parameters.rb +5 -0
  36. data/lib/tdlib/types/base.rb +29 -0
  37. data/lib/tdlib/types/basic_group.rb +18 -0
  38. data/lib/tdlib/types/basic_group_full_info.rb +13 -0
  39. data/lib/tdlib/types/bot_command.rb +10 -0
  40. data/lib/tdlib/types/bot_info.rb +10 -0
  41. data/lib/tdlib/types/call.rb +14 -0
  42. data/lib/tdlib/types/call_connection.rb +16 -0
  43. data/lib/tdlib/types/call_discard_reason.rb +14 -0
  44. data/lib/tdlib/types/call_discard_reason/declined.rb +6 -0
  45. data/lib/tdlib/types/call_discard_reason/disconnected.rb +5 -0
  46. data/lib/tdlib/types/call_discard_reason/empty.rb +5 -0
  47. data/lib/tdlib/types/call_discard_reason/hung_up.rb +5 -0
  48. data/lib/tdlib/types/call_discard_reason/missed.rb +6 -0
  49. data/lib/tdlib/types/call_id.rb +8 -0
  50. data/lib/tdlib/types/call_protocol.rb +14 -0
  51. data/lib/tdlib/types/call_state.rb +15 -0
  52. data/lib/tdlib/types/call_state/discarded.rb +12 -0
  53. data/lib/tdlib/types/call_state/error.rb +9 -0
  54. data/lib/tdlib/types/call_state/exchanging_keys.rb +5 -0
  55. data/lib/tdlib/types/call_state/hanging_up.rb +5 -0
  56. data/lib/tdlib/types/call_state/pending.rb +10 -0
  57. data/lib/tdlib/types/call_state/ready.rb +16 -0
  58. data/lib/tdlib/types/callback_query_answer.rb +12 -0
  59. data/lib/tdlib/types/callback_query_payload.rb +11 -0
  60. data/lib/tdlib/types/callback_query_payload/data.rb +8 -0
  61. data/lib/tdlib/types/callback_query_payload/game.rb +8 -0
  62. data/lib/tdlib/types/chat.rb +51 -0
  63. data/lib/tdlib/types/chat_action.rb +22 -0
  64. data/lib/tdlib/types/chat_action/cancel.rb +5 -0
  65. data/lib/tdlib/types/chat_action/choosing_contact.rb +5 -0
  66. data/lib/tdlib/types/chat_action/choosing_location.rb +5 -0
  67. data/lib/tdlib/types/chat_action/recording_video.rb +5 -0
  68. data/lib/tdlib/types/chat_action/recording_video_note.rb +5 -0
  69. data/lib/tdlib/types/chat_action/recording_voice_note.rb +5 -0
  70. data/lib/tdlib/types/chat_action/start_playing_game.rb +5 -0
  71. data/lib/tdlib/types/chat_action/typing.rb +5 -0
  72. data/lib/tdlib/types/chat_action/uploading_document.rb +8 -0
  73. data/lib/tdlib/types/chat_action/uploading_photo.rb +8 -0
  74. data/lib/tdlib/types/chat_action/uploading_video.rb +8 -0
  75. data/lib/tdlib/types/chat_action/uploading_video_note.rb +8 -0
  76. data/lib/tdlib/types/chat_action/uploading_voice_note.rb +8 -0
  77. data/lib/tdlib/types/chat_event.rb +14 -0
  78. data/lib/tdlib/types/chat_event_action.rb +26 -0
  79. data/lib/tdlib/types/chat_event_action/description_changed.rb +10 -0
  80. data/lib/tdlib/types/chat_event_action/invites_toggled.rb +8 -0
  81. data/lib/tdlib/types/chat_event_action/is_all_history_available_toggled.rb +8 -0
  82. data/lib/tdlib/types/chat_event_action/member_invited.rb +10 -0
  83. data/lib/tdlib/types/chat_event_action/member_joined.rb +5 -0
  84. data/lib/tdlib/types/chat_event_action/member_left.rb +5 -0
  85. data/lib/tdlib/types/chat_event_action/member_promoted.rb +12 -0
  86. data/lib/tdlib/types/chat_event_action/member_restricted.rb +12 -0
  87. data/lib/tdlib/types/chat_event_action/message_deleted.rb +8 -0
  88. data/lib/tdlib/types/chat_event_action/message_edited.rb +10 -0
  89. data/lib/tdlib/types/chat_event_action/message_pinned.rb +8 -0
  90. data/lib/tdlib/types/chat_event_action/message_unpinned.rb +5 -0
  91. data/lib/tdlib/types/chat_event_action/photo_changed.rb +10 -0
  92. data/lib/tdlib/types/chat_event_action/sign_messages_toggled.rb +8 -0
  93. data/lib/tdlib/types/chat_event_action/sticker_set_changed.rb +10 -0
  94. data/lib/tdlib/types/chat_event_action/title_changed.rb +10 -0
  95. data/lib/tdlib/types/chat_event_action/username_changed.rb +10 -0
  96. data/lib/tdlib/types/chat_event_log_filters.rb +27 -0
  97. data/lib/tdlib/types/chat_events.rb +8 -0
  98. data/lib/tdlib/types/chat_invite_link.rb +8 -0
  99. data/lib/tdlib/types/chat_invite_link_info.rb +20 -0
  100. data/lib/tdlib/types/chat_member.rb +18 -0
  101. data/lib/tdlib/types/chat_member_status.rb +15 -0
  102. data/lib/tdlib/types/chat_member_status/administrator.rb +29 -0
  103. data/lib/tdlib/types/chat_member_status/banned.rb +11 -0
  104. data/lib/tdlib/types/chat_member_status/creator.rb +8 -0
  105. data/lib/tdlib/types/chat_member_status/left.rb +5 -0
  106. data/lib/tdlib/types/chat_member_status/member.rb +5 -0
  107. data/lib/tdlib/types/chat_member_status/restricted.rb +27 -0
  108. data/lib/tdlib/types/chat_members.rb +10 -0
  109. data/lib/tdlib/types/chat_members_filter.rb +14 -0
  110. data/lib/tdlib/types/chat_members_filter/administrators.rb +5 -0
  111. data/lib/tdlib/types/chat_members_filter/banned.rb +5 -0
  112. data/lib/tdlib/types/chat_members_filter/bots.rb +5 -0
  113. data/lib/tdlib/types/chat_members_filter/members.rb +5 -0
  114. data/lib/tdlib/types/chat_members_filter/restricted.rb +5 -0
  115. data/lib/tdlib/types/chat_notification_settings.rb +22 -0
  116. data/lib/tdlib/types/chat_photo.rb +10 -0
  117. data/lib/tdlib/types/chat_report_reason.rb +14 -0
  118. data/lib/tdlib/types/chat_report_reason/copyright.rb +5 -0
  119. data/lib/tdlib/types/chat_report_reason/custom.rb +8 -0
  120. data/lib/tdlib/types/chat_report_reason/pornography.rb +5 -0
  121. data/lib/tdlib/types/chat_report_reason/spam.rb +5 -0
  122. data/lib/tdlib/types/chat_report_reason/violence.rb +5 -0
  123. data/lib/tdlib/types/chat_report_spam_state.rb +8 -0
  124. data/lib/tdlib/types/chat_type.rb +13 -0
  125. data/lib/tdlib/types/chat_type/basic_group.rb +8 -0
  126. data/lib/tdlib/types/chat_type/private.rb +8 -0
  127. data/lib/tdlib/types/chat_type/secret.rb +10 -0
  128. data/lib/tdlib/types/chat_type/supergroup.rb +11 -0
  129. data/lib/tdlib/types/chats.rb +8 -0
  130. data/lib/tdlib/types/check_chat_username_result.rb +14 -0
  131. data/lib/tdlib/types/check_chat_username_result/ok.rb +5 -0
  132. data/lib/tdlib/types/check_chat_username_result/public_chats_too_much.rb +5 -0
  133. data/lib/tdlib/types/check_chat_username_result/public_groups_unavailable.rb +5 -0
  134. data/lib/tdlib/types/check_chat_username_result/username_invalid.rb +5 -0
  135. data/lib/tdlib/types/check_chat_username_result/username_occupied.rb +5 -0
  136. data/lib/tdlib/types/connected_website.rb +25 -0
  137. data/lib/tdlib/types/connected_websites.rb +8 -0
  138. data/lib/tdlib/types/connection_state.rb +14 -0
  139. data/lib/tdlib/types/connection_state/connecting.rb +5 -0
  140. data/lib/tdlib/types/connection_state/connecting_to_proxy.rb +5 -0
  141. data/lib/tdlib/types/connection_state/ready.rb +5 -0
  142. data/lib/tdlib/types/connection_state/updating.rb +5 -0
  143. data/lib/tdlib/types/connection_state/waiting_for_network.rb +6 -0
  144. data/lib/tdlib/types/contact.rb +16 -0
  145. data/lib/tdlib/types/count.rb +8 -0
  146. data/lib/tdlib/types/custom_request_result.rb +8 -0
  147. data/lib/tdlib/types/date.rb +12 -0
  148. data/lib/tdlib/types/dated_file.rb +10 -0
  149. data/lib/tdlib/types/deep_link_info.rb +10 -0
  150. data/lib/tdlib/types/device_token.rb +22 -0
  151. data/lib/tdlib/types/device_token/apple_push.rb +10 -0
  152. data/lib/tdlib/types/device_token/apple_push_vo_ip.rb +10 -0
  153. data/lib/tdlib/types/device_token/black_berry_push.rb +8 -0
  154. data/lib/tdlib/types/device_token/google_cloud_messaging.rb +8 -0
  155. data/lib/tdlib/types/device_token/microsoft_push.rb +8 -0
  156. data/lib/tdlib/types/device_token/microsoft_push_vo_ip.rb +8 -0
  157. data/lib/tdlib/types/device_token/simple_push.rb +9 -0
  158. data/lib/tdlib/types/device_token/tizen_push.rb +8 -0
  159. data/lib/tdlib/types/device_token/ubuntu_push.rb +8 -0
  160. data/lib/tdlib/types/device_token/web_push.rb +13 -0
  161. data/lib/tdlib/types/device_token/windows_push.rb +9 -0
  162. data/lib/tdlib/types/document.rb +14 -0
  163. data/lib/tdlib/types/draft_message.rb +11 -0
  164. data/lib/tdlib/types/email_address_authentication_code_info.rb +10 -0
  165. data/lib/tdlib/types/encrypted_credentials.rb +12 -0
  166. data/lib/tdlib/types/encrypted_passport_element.rb +25 -0
  167. data/lib/tdlib/types/error.rb +12 -0
  168. data/lib/tdlib/types/file.rb +18 -0
  169. data/lib/tdlib/types/file_type.rb +25 -0
  170. data/lib/tdlib/types/file_type/animation.rb +5 -0
  171. data/lib/tdlib/types/file_type/audio.rb +5 -0
  172. data/lib/tdlib/types/file_type/document.rb +5 -0
  173. data/lib/tdlib/types/file_type/none.rb +5 -0
  174. data/lib/tdlib/types/file_type/photo.rb +5 -0
  175. data/lib/tdlib/types/file_type/profile_photo.rb +5 -0
  176. data/lib/tdlib/types/file_type/secret.rb +5 -0
  177. data/lib/tdlib/types/file_type/secret_thumbnail.rb +5 -0
  178. data/lib/tdlib/types/file_type/secure.rb +5 -0
  179. data/lib/tdlib/types/file_type/sticker.rb +5 -0
  180. data/lib/tdlib/types/file_type/thumbnail.rb +5 -0
  181. data/lib/tdlib/types/file_type/unknown.rb +5 -0
  182. data/lib/tdlib/types/file_type/video.rb +5 -0
  183. data/lib/tdlib/types/file_type/video_note.rb +5 -0
  184. data/lib/tdlib/types/file_type/voice_note.rb +5 -0
  185. data/lib/tdlib/types/file_type/wallpaper.rb +5 -0
  186. data/lib/tdlib/types/formatted_text.rb +10 -0
  187. data/lib/tdlib/types/found_messages.rb +10 -0
  188. data/lib/tdlib/types/game.rb +21 -0
  189. data/lib/tdlib/types/game_high_score.rb +12 -0
  190. data/lib/tdlib/types/game_high_scores.rb +8 -0
  191. data/lib/tdlib/types/hashtags.rb +8 -0
  192. data/lib/tdlib/types/identity_document.rb +19 -0
  193. data/lib/tdlib/types/imported_contacts.rb +12 -0
  194. data/lib/tdlib/types/inline_keyboard_button.rb +10 -0
  195. data/lib/tdlib/types/inline_keyboard_button_type.rb +14 -0
  196. data/lib/tdlib/types/inline_keyboard_button_type/buy.rb +7 -0
  197. data/lib/tdlib/types/inline_keyboard_button_type/callback.rb +8 -0
  198. data/lib/tdlib/types/inline_keyboard_button_type/callback_game.rb +7 -0
  199. data/lib/tdlib/types/inline_keyboard_button_type/switch_inline.rb +10 -0
  200. data/lib/tdlib/types/inline_keyboard_button_type/url.rb +8 -0
  201. data/lib/tdlib/types/inline_query_result.rb +21 -0
  202. data/lib/tdlib/types/inline_query_result/animation.rb +12 -0
  203. data/lib/tdlib/types/inline_query_result/article.rb +18 -0
  204. data/lib/tdlib/types/inline_query_result/audio.rb +10 -0
  205. data/lib/tdlib/types/inline_query_result/contact.rb +12 -0
  206. data/lib/tdlib/types/inline_query_result/document.rb +14 -0
  207. data/lib/tdlib/types/inline_query_result/game.rb +10 -0
  208. data/lib/tdlib/types/inline_query_result/location.rb +14 -0
  209. data/lib/tdlib/types/inline_query_result/photo.rb +14 -0
  210. data/lib/tdlib/types/inline_query_result/sticker.rb +10 -0
  211. data/lib/tdlib/types/inline_query_result/venue.rb +12 -0
  212. data/lib/tdlib/types/inline_query_result/video.rb +14 -0
  213. data/lib/tdlib/types/inline_query_result/voice_note.rb +12 -0
  214. data/lib/tdlib/types/inline_query_results.rb +19 -0
  215. data/lib/tdlib/types/input_credentials.rb +13 -0
  216. data/lib/tdlib/types/input_credentials/android_pay.rb +8 -0
  217. data/lib/tdlib/types/input_credentials/apple_pay.rb +8 -0
  218. data/lib/tdlib/types/input_credentials/new.rb +10 -0
  219. data/lib/tdlib/types/input_credentials/saved.rb +9 -0
  220. data/lib/tdlib/types/input_file.rb +13 -0
  221. data/lib/tdlib/types/input_file/generated.rb +14 -0
  222. data/lib/tdlib/types/input_file/id.rb +8 -0
  223. data/lib/tdlib/types/input_file/local.rb +8 -0
  224. data/lib/tdlib/types/input_file/remote.rb +8 -0
  225. data/lib/tdlib/types/input_identity_document.rb +19 -0
  226. data/lib/tdlib/types/input_inline_query_result.rb +22 -0
  227. data/lib/tdlib/types/input_inline_query_result/animated_gif.rb +26 -0
  228. data/lib/tdlib/types/input_inline_query_result/animated_mpeg4.rb +27 -0
  229. data/lib/tdlib/types/input_inline_query_result/article.rb +28 -0
  230. data/lib/tdlib/types/input_inline_query_result/audio.rb +22 -0
  231. data/lib/tdlib/types/input_inline_query_result/contact.rb +22 -0
  232. data/lib/tdlib/types/input_inline_query_result/document.rb +29 -0
  233. data/lib/tdlib/types/input_inline_query_result/game.rb +12 -0
  234. data/lib/tdlib/types/input_inline_query_result/location.rb +27 -0
  235. data/lib/tdlib/types/input_inline_query_result/photo.rb +25 -0
  236. data/lib/tdlib/types/input_inline_query_result/sticker.rb +22 -0
  237. data/lib/tdlib/types/input_inline_query_result/venue.rb +22 -0
  238. data/lib/tdlib/types/input_inline_query_result/video.rb +31 -0
  239. data/lib/tdlib/types/input_inline_query_result/voice_note.rb +20 -0
  240. data/lib/tdlib/types/input_message_content.rb +24 -0
  241. data/lib/tdlib/types/input_message_content/animation.rb +18 -0
  242. data/lib/tdlib/types/input_message_content/audio.rb +18 -0
  243. data/lib/tdlib/types/input_message_content/contact.rb +8 -0
  244. data/lib/tdlib/types/input_message_content/document.rb +12 -0
  245. data/lib/tdlib/types/input_message_content/forwarded.rb +13 -0
  246. data/lib/tdlib/types/input_message_content/game.rb +10 -0
  247. data/lib/tdlib/types/input_message_content/invoice.rb +28 -0
  248. data/lib/tdlib/types/input_message_content/location.rb +11 -0
  249. data/lib/tdlib/types/input_message_content/photo.rb +22 -0
  250. data/lib/tdlib/types/input_message_content/sticker.rb +14 -0
  251. data/lib/tdlib/types/input_message_content/text.rb +14 -0
  252. data/lib/tdlib/types/input_message_content/venue.rb +8 -0
  253. data/lib/tdlib/types/input_message_content/video.rb +25 -0
  254. data/lib/tdlib/types/input_message_content/video_note.rb +14 -0
  255. data/lib/tdlib/types/input_message_content/voice_note.rb +14 -0
  256. data/lib/tdlib/types/input_passport_element.rb +22 -0
  257. data/lib/tdlib/types/input_passport_element/address.rb +8 -0
  258. data/lib/tdlib/types/input_passport_element/bank_statement.rb +8 -0
  259. data/lib/tdlib/types/input_passport_element/driver_license.rb +8 -0
  260. data/lib/tdlib/types/input_passport_element/email_address.rb +8 -0
  261. data/lib/tdlib/types/input_passport_element/identity_card.rb +8 -0
  262. data/lib/tdlib/types/input_passport_element/internal_passport.rb +8 -0
  263. data/lib/tdlib/types/input_passport_element/passport.rb +8 -0
  264. data/lib/tdlib/types/input_passport_element/passport_registration.rb +8 -0
  265. data/lib/tdlib/types/input_passport_element/personal_details.rb +8 -0
  266. data/lib/tdlib/types/input_passport_element/phone_number.rb +8 -0
  267. data/lib/tdlib/types/input_passport_element/rental_agreement.rb +8 -0
  268. data/lib/tdlib/types/input_passport_element/temporary_registration.rb +8 -0
  269. data/lib/tdlib/types/input_passport_element/utility_bill.rb +8 -0
  270. data/lib/tdlib/types/input_passport_element_error.rb +12 -0
  271. data/lib/tdlib/types/input_passport_element_error_source.rb +18 -0
  272. data/lib/tdlib/types/input_passport_element_error_source/data_field.rb +11 -0
  273. data/lib/tdlib/types/input_passport_element_error_source/file.rb +9 -0
  274. data/lib/tdlib/types/input_passport_element_error_source/files.rb +9 -0
  275. data/lib/tdlib/types/input_passport_element_error_source/front_side.rb +9 -0
  276. data/lib/tdlib/types/input_passport_element_error_source/reverse_side.rb +9 -0
  277. data/lib/tdlib/types/input_passport_element_error_source/selfie.rb +9 -0
  278. data/lib/tdlib/types/input_passport_element_error_source/translation_file.rb +9 -0
  279. data/lib/tdlib/types/input_passport_element_error_source/translation_files.rb +9 -0
  280. data/lib/tdlib/types/input_passport_element_error_source/unspecified.rb +9 -0
  281. data/lib/tdlib/types/input_personal_document.rb +11 -0
  282. data/lib/tdlib/types/input_sticker.rb +14 -0
  283. data/lib/tdlib/types/input_thumbnail.rb +16 -0
  284. data/lib/tdlib/types/invoice.rb +27 -0
  285. data/lib/tdlib/types/keyboard_button.rb +10 -0
  286. data/lib/tdlib/types/keyboard_button_type.rb +12 -0
  287. data/lib/tdlib/types/keyboard_button_type/request_location.rb +5 -0
  288. data/lib/tdlib/types/keyboard_button_type/request_phone_number.rb +5 -0
  289. data/lib/tdlib/types/keyboard_button_type/text.rb +5 -0
  290. data/lib/tdlib/types/labeled_price_part.rb +10 -0
  291. data/lib/tdlib/types/language_pack_info.rb +14 -0
  292. data/lib/tdlib/types/language_pack_string.rb +10 -0
  293. data/lib/tdlib/types/language_pack_string_value.rb +12 -0
  294. data/lib/tdlib/types/language_pack_string_value/deleted.rb +5 -0
  295. data/lib/tdlib/types/language_pack_string_value/ordinary.rb +8 -0
  296. data/lib/tdlib/types/language_pack_string_value/pluralized.rb +18 -0
  297. data/lib/tdlib/types/language_pack_strings.rb +8 -0
  298. data/lib/tdlib/types/link_state.rb +13 -0
  299. data/lib/tdlib/types/link_state/is_contact.rb +5 -0
  300. data/lib/tdlib/types/link_state/knows_phone_number.rb +5 -0
  301. data/lib/tdlib/types/link_state/none.rb +5 -0
  302. data/lib/tdlib/types/local_file.rb +25 -0
  303. data/lib/tdlib/types/localization_target_info.rb +8 -0
  304. data/lib/tdlib/types/location.rb +10 -0
  305. data/lib/tdlib/types/mask_point.rb +13 -0
  306. data/lib/tdlib/types/mask_point/chin.rb +5 -0
  307. data/lib/tdlib/types/mask_point/eyes.rb +5 -0
  308. data/lib/tdlib/types/mask_point/forehead.rb +5 -0
  309. data/lib/tdlib/types/mask_point/mouth.rb +5 -0
  310. data/lib/tdlib/types/mask_position.rb +17 -0
  311. data/lib/tdlib/types/message.rb +59 -0
  312. data/lib/tdlib/types/message_content.rb +48 -0
  313. data/lib/tdlib/types/message_content/animation.rb +13 -0
  314. data/lib/tdlib/types/message_content/audio.rb +10 -0
  315. data/lib/tdlib/types/message_content/basic_group_chat_create.rb +10 -0
  316. data/lib/tdlib/types/message_content/call.rb +10 -0
  317. data/lib/tdlib/types/message_content/chat_add_members.rb +8 -0
  318. data/lib/tdlib/types/message_content/chat_change_photo.rb +8 -0
  319. data/lib/tdlib/types/message_content/chat_change_title.rb +8 -0
  320. data/lib/tdlib/types/message_content/chat_delete_member.rb +8 -0
  321. data/lib/tdlib/types/message_content/chat_delete_photo.rb +5 -0
  322. data/lib/tdlib/types/message_content/chat_join_by_link.rb +5 -0
  323. data/lib/tdlib/types/message_content/chat_set_ttl.rb +8 -0
  324. data/lib/tdlib/types/message_content/chat_upgrade_from.rb +10 -0
  325. data/lib/tdlib/types/message_content/chat_upgrade_to.rb +8 -0
  326. data/lib/tdlib/types/message_content/contact.rb +8 -0
  327. data/lib/tdlib/types/message_content/contact_registered.rb +5 -0
  328. data/lib/tdlib/types/message_content/custom_service_action.rb +8 -0
  329. data/lib/tdlib/types/message_content/document.rb +10 -0
  330. data/lib/tdlib/types/message_content/expired_photo.rb +5 -0
  331. data/lib/tdlib/types/message_content/expired_video.rb +5 -0
  332. data/lib/tdlib/types/message_content/game.rb +8 -0
  333. data/lib/tdlib/types/message_content/game_score.rb +13 -0
  334. data/lib/tdlib/types/message_content/invoice.rb +26 -0
  335. data/lib/tdlib/types/message_content/location.rb +14 -0
  336. data/lib/tdlib/types/message_content/passport_data_received.rb +10 -0
  337. data/lib/tdlib/types/message_content/passport_data_sent.rb +8 -0
  338. data/lib/tdlib/types/message_content/payment_successful.rb +13 -0
  339. data/lib/tdlib/types/message_content/payment_successful_bot.rb +24 -0
  340. data/lib/tdlib/types/message_content/photo.rb +12 -0
  341. data/lib/tdlib/types/message_content/pin_message.rb +8 -0
  342. data/lib/tdlib/types/message_content/screenshot_taken.rb +5 -0
  343. data/lib/tdlib/types/message_content/sticker.rb +8 -0
  344. data/lib/tdlib/types/message_content/supergroup_chat_create.rb +8 -0
  345. data/lib/tdlib/types/message_content/text.rb +10 -0
  346. data/lib/tdlib/types/message_content/unsupported.rb +5 -0
  347. data/lib/tdlib/types/message_content/venue.rb +8 -0
  348. data/lib/tdlib/types/message_content/video.rb +13 -0
  349. data/lib/tdlib/types/message_content/video_note.rb +13 -0
  350. data/lib/tdlib/types/message_content/voice_note.rb +12 -0
  351. data/lib/tdlib/types/message_content/website_connected.rb +8 -0
  352. data/lib/tdlib/types/message_forward_info.rb +11 -0
  353. data/lib/tdlib/types/message_forward_info/message_forwarded_from_user.rb +16 -0
  354. data/lib/tdlib/types/message_forward_info/message_forwarded_post.rb +21 -0
  355. data/lib/tdlib/types/message_sending_state.rb +11 -0
  356. data/lib/tdlib/types/message_sending_state/failed.rb +5 -0
  357. data/lib/tdlib/types/message_sending_state/pending.rb +5 -0
  358. data/lib/tdlib/types/messages.rb +10 -0
  359. data/lib/tdlib/types/network_statistics.rb +10 -0
  360. data/lib/tdlib/types/network_statistics_entry.rb +11 -0
  361. data/lib/tdlib/types/network_statistics_entry/call.rb +15 -0
  362. data/lib/tdlib/types/network_statistics_entry/file.rb +15 -0
  363. data/lib/tdlib/types/network_type.rb +14 -0
  364. data/lib/tdlib/types/network_type/mobile.rb +5 -0
  365. data/lib/tdlib/types/network_type/mobile_roaming.rb +5 -0
  366. data/lib/tdlib/types/network_type/none.rb +5 -0
  367. data/lib/tdlib/types/network_type/other.rb +5 -0
  368. data/lib/tdlib/types/network_type/wi_fi.rb +5 -0
  369. data/lib/tdlib/types/notification_settings_scope.rb +11 -0
  370. data/lib/tdlib/types/notification_settings_scope/group_chats.rb +6 -0
  371. data/lib/tdlib/types/notification_settings_scope/private_chats.rb +6 -0
  372. data/lib/tdlib/types/ok.rb +5 -0
  373. data/lib/tdlib/types/option_value.rb +13 -0
  374. data/lib/tdlib/types/option_value/boolean.rb +8 -0
  375. data/lib/tdlib/types/option_value/empty.rb +5 -0
  376. data/lib/tdlib/types/option_value/integer.rb +8 -0
  377. data/lib/tdlib/types/option_value/string.rb +8 -0
  378. data/lib/tdlib/types/order_info.rb +14 -0
  379. data/lib/tdlib/types/page_block.rb +32 -0
  380. data/lib/tdlib/types/page_block/anchor.rb +8 -0
  381. data/lib/tdlib/types/page_block/animation.rb +12 -0
  382. data/lib/tdlib/types/page_block/audio.rb +10 -0
  383. data/lib/tdlib/types/page_block/author_date.rb +10 -0
  384. data/lib/tdlib/types/page_block/block_quote.rb +10 -0
  385. data/lib/tdlib/types/page_block/chat_link.rb +12 -0
  386. data/lib/tdlib/types/page_block/collage.rb +10 -0
  387. data/lib/tdlib/types/page_block/cover.rb +8 -0
  388. data/lib/tdlib/types/page_block/divider.rb +5 -0
  389. data/lib/tdlib/types/page_block/embedded.rb +22 -0
  390. data/lib/tdlib/types/page_block/embedded_post.rb +18 -0
  391. data/lib/tdlib/types/page_block/footer.rb +8 -0
  392. data/lib/tdlib/types/page_block/header.rb +8 -0
  393. data/lib/tdlib/types/page_block/list.rb +10 -0
  394. data/lib/tdlib/types/page_block/paragraph.rb +8 -0
  395. data/lib/tdlib/types/page_block/photo.rb +10 -0
  396. data/lib/tdlib/types/page_block/preformatted.rb +10 -0
  397. data/lib/tdlib/types/page_block/pull_quote.rb +10 -0
  398. data/lib/tdlib/types/page_block/slideshow.rb +10 -0
  399. data/lib/tdlib/types/page_block/subheader.rb +8 -0
  400. data/lib/tdlib/types/page_block/subtitle.rb +8 -0
  401. data/lib/tdlib/types/page_block/title.rb +8 -0
  402. data/lib/tdlib/types/page_block/video.rb +14 -0
  403. data/lib/tdlib/types/passport_authorization_form.rb +17 -0
  404. data/lib/tdlib/types/passport_element.rb +22 -0
  405. data/lib/tdlib/types/passport_element/address.rb +8 -0
  406. data/lib/tdlib/types/passport_element/bank_statement.rb +8 -0
  407. data/lib/tdlib/types/passport_element/driver_license.rb +8 -0
  408. data/lib/tdlib/types/passport_element/email_address.rb +8 -0
  409. data/lib/tdlib/types/passport_element/identity_card.rb +8 -0
  410. data/lib/tdlib/types/passport_element/internal_passport.rb +8 -0
  411. data/lib/tdlib/types/passport_element/passport.rb +8 -0
  412. data/lib/tdlib/types/passport_element/passport_registration.rb +8 -0
  413. data/lib/tdlib/types/passport_element/personal_details.rb +8 -0
  414. data/lib/tdlib/types/passport_element/phone_number.rb +8 -0
  415. data/lib/tdlib/types/passport_element/rental_agreement.rb +8 -0
  416. data/lib/tdlib/types/passport_element/temporary_registration.rb +8 -0
  417. data/lib/tdlib/types/passport_element/utility_bill.rb +8 -0
  418. data/lib/tdlib/types/passport_element_error.rb +12 -0
  419. data/lib/tdlib/types/passport_element_error_source.rb +18 -0
  420. data/lib/tdlib/types/passport_element_error_source/data_field.rb +9 -0
  421. data/lib/tdlib/types/passport_element_error_source/file.rb +6 -0
  422. data/lib/tdlib/types/passport_element_error_source/files.rb +6 -0
  423. data/lib/tdlib/types/passport_element_error_source/front_side.rb +6 -0
  424. data/lib/tdlib/types/passport_element_error_source/reverse_side.rb +6 -0
  425. data/lib/tdlib/types/passport_element_error_source/selfie.rb +6 -0
  426. data/lib/tdlib/types/passport_element_error_source/translation_file.rb +6 -0
  427. data/lib/tdlib/types/passport_element_error_source/translation_files.rb +6 -0
  428. data/lib/tdlib/types/passport_element_error_source/unspecified.rb +6 -0
  429. data/lib/tdlib/types/passport_element_type.rb +22 -0
  430. data/lib/tdlib/types/passport_element_type/address.rb +5 -0
  431. data/lib/tdlib/types/passport_element_type/bank_statement.rb +5 -0
  432. data/lib/tdlib/types/passport_element_type/driver_license.rb +5 -0
  433. data/lib/tdlib/types/passport_element_type/email_address.rb +5 -0
  434. data/lib/tdlib/types/passport_element_type/identity_card.rb +5 -0
  435. data/lib/tdlib/types/passport_element_type/internal_passport.rb +5 -0
  436. data/lib/tdlib/types/passport_element_type/passport.rb +5 -0
  437. data/lib/tdlib/types/passport_element_type/passport_registration.rb +5 -0
  438. data/lib/tdlib/types/passport_element_type/personal_details.rb +5 -0
  439. data/lib/tdlib/types/passport_element_type/phone_number.rb +5 -0
  440. data/lib/tdlib/types/passport_element_type/rental_agreement.rb +5 -0
  441. data/lib/tdlib/types/passport_element_type/temporary_registration.rb +5 -0
  442. data/lib/tdlib/types/passport_element_type/utility_bill.rb +5 -0
  443. data/lib/tdlib/types/passport_elements.rb +8 -0
  444. data/lib/tdlib/types/passport_required_element.rb +9 -0
  445. data/lib/tdlib/types/passport_suitable_element.rb +15 -0
  446. data/lib/tdlib/types/password_state.rb +17 -0
  447. data/lib/tdlib/types/payment_form.rb +23 -0
  448. data/lib/tdlib/types/payment_receipt.rb +18 -0
  449. data/lib/tdlib/types/payment_result.rb +11 -0
  450. data/lib/tdlib/types/payments_provider_stripe.rb +14 -0
  451. data/lib/tdlib/types/personal_details.rb +26 -0
  452. data/lib/tdlib/types/personal_document.rb +11 -0
  453. data/lib/tdlib/types/photo.rb +12 -0
  454. data/lib/tdlib/types/photo_size.rb +14 -0
  455. data/lib/tdlib/types/profile_photo.rb +13 -0
  456. data/lib/tdlib/types/proxies.rb +8 -0
  457. data/lib/tdlib/types/proxy.rb +18 -0
  458. data/lib/tdlib/types/proxy_type.rb +12 -0
  459. data/lib/tdlib/types/proxy_type/http.rb +13 -0
  460. data/lib/tdlib/types/proxy_type/mtproto.rb +8 -0
  461. data/lib/tdlib/types/proxy_type/socks5.rb +10 -0
  462. data/lib/tdlib/types/public_message_link.rb +10 -0
  463. data/lib/tdlib/types/recovery_email_address.rb +8 -0
  464. data/lib/tdlib/types/remote_file.rb +22 -0
  465. data/lib/tdlib/types/reply_markup.rb +13 -0
  466. data/lib/tdlib/types/reply_markup/force_reply.rb +10 -0
  467. data/lib/tdlib/types/reply_markup/inline_keyboard.rb +8 -0
  468. data/lib/tdlib/types/reply_markup/remove_keyboard.rb +11 -0
  469. data/lib/tdlib/types/reply_markup/show_keyboard.rb +16 -0
  470. data/lib/tdlib/types/rich_text.rb +18 -0
  471. data/lib/tdlib/types/rich_text/bold.rb +8 -0
  472. data/lib/tdlib/types/rich_text/email_address.rb +10 -0
  473. data/lib/tdlib/types/rich_text/fixed.rb +8 -0
  474. data/lib/tdlib/types/rich_text/italic.rb +8 -0
  475. data/lib/tdlib/types/rich_text/plain.rb +8 -0
  476. data/lib/tdlib/types/rich_text/s.rb +8 -0
  477. data/lib/tdlib/types/rich_text/strikethrough.rb +8 -0
  478. data/lib/tdlib/types/rich_text/underline.rb +8 -0
  479. data/lib/tdlib/types/rich_text/url.rb +10 -0
  480. data/lib/tdlib/types/saved_credentials.rb +10 -0
  481. data/lib/tdlib/types/scope_notification_settings.rb +13 -0
  482. data/lib/tdlib/types/search_messages_filter.rb +25 -0
  483. data/lib/tdlib/types/search_messages_filter/animation.rb +5 -0
  484. data/lib/tdlib/types/search_messages_filter/audio.rb +5 -0
  485. data/lib/tdlib/types/search_messages_filter/call.rb +5 -0
  486. data/lib/tdlib/types/search_messages_filter/chat_photo.rb +5 -0
  487. data/lib/tdlib/types/search_messages_filter/document.rb +5 -0
  488. data/lib/tdlib/types/search_messages_filter/empty.rb +5 -0
  489. data/lib/tdlib/types/search_messages_filter/mention.rb +5 -0
  490. data/lib/tdlib/types/search_messages_filter/missed_call.rb +5 -0
  491. data/lib/tdlib/types/search_messages_filter/photo.rb +5 -0
  492. data/lib/tdlib/types/search_messages_filter/photo_and_video.rb +5 -0
  493. data/lib/tdlib/types/search_messages_filter/unread_mention.rb +6 -0
  494. data/lib/tdlib/types/search_messages_filter/url.rb +5 -0
  495. data/lib/tdlib/types/search_messages_filter/video.rb +5 -0
  496. data/lib/tdlib/types/search_messages_filter/video_note.rb +5 -0
  497. data/lib/tdlib/types/search_messages_filter/voice_and_video_note.rb +5 -0
  498. data/lib/tdlib/types/search_messages_filter/voice_note.rb +5 -0
  499. data/lib/tdlib/types/seconds.rb +8 -0
  500. data/lib/tdlib/types/secret_chat.rb +26 -0
  501. data/lib/tdlib/types/secret_chat_state.rb +12 -0
  502. data/lib/tdlib/types/secret_chat_state/closed.rb +5 -0
  503. data/lib/tdlib/types/secret_chat_state/pending.rb +5 -0
  504. data/lib/tdlib/types/secret_chat_state/ready.rb +5 -0
  505. data/lib/tdlib/types/session.rb +39 -0
  506. data/lib/tdlib/types/sessions.rb +8 -0
  507. data/lib/tdlib/types/shipping_option.rb +13 -0
  508. data/lib/tdlib/types/sticker.rb +22 -0
  509. data/lib/tdlib/types/sticker_emojis.rb +10 -0
  510. data/lib/tdlib/types/sticker_set.rb +27 -0
  511. data/lib/tdlib/types/sticker_set_info.rb +29 -0
  512. data/lib/tdlib/types/sticker_sets.rb +10 -0
  513. data/lib/tdlib/types/stickers.rb +8 -0
  514. data/lib/tdlib/types/storage_statistics.rb +12 -0
  515. data/lib/tdlib/types/storage_statistics_by_chat.rb +14 -0
  516. data/lib/tdlib/types/storage_statistics_by_file_type.rb +12 -0
  517. data/lib/tdlib/types/storage_statistics_fast.rb +12 -0
  518. data/lib/tdlib/types/supergroup.rb +40 -0
  519. data/lib/tdlib/types/supergroup_full_info.rb +39 -0
  520. data/lib/tdlib/types/supergroup_members_filter.rb +15 -0
  521. data/lib/tdlib/types/supergroup_members_filter/administrators.rb +5 -0
  522. data/lib/tdlib/types/supergroup_members_filter/banned.rb +8 -0
  523. data/lib/tdlib/types/supergroup_members_filter/bots.rb +5 -0
  524. data/lib/tdlib/types/supergroup_members_filter/recent.rb +5 -0
  525. data/lib/tdlib/types/supergroup_members_filter/restricted.rb +8 -0
  526. data/lib/tdlib/types/supergroup_members_filter/search.rb +8 -0
  527. data/lib/tdlib/types/t_me_url.rb +10 -0
  528. data/lib/tdlib/types/t_me_url_type.rb +13 -0
  529. data/lib/tdlib/types/t_me_url_type/chat_invite.rb +8 -0
  530. data/lib/tdlib/types/t_me_url_type/sticker_set.rb +8 -0
  531. data/lib/tdlib/types/t_me_url_type/supergroup.rb +8 -0
  532. data/lib/tdlib/types/t_me_url_type/user.rb +8 -0
  533. data/lib/tdlib/types/t_me_urls.rb +8 -0
  534. data/lib/tdlib/types/tdlib_parameters.rb +46 -0
  535. data/lib/tdlib/types/temporary_password_state.rb +10 -0
  536. data/lib/tdlib/types/terms_of_service.rb +12 -0
  537. data/lib/tdlib/types/text.rb +8 -0
  538. data/lib/tdlib/types/text_entities.rb +8 -0
  539. data/lib/tdlib/types/text_entity.rb +12 -0
  540. data/lib/tdlib/types/text_entity_type.rb +23 -0
  541. data/lib/tdlib/types/text_entity_type/bold.rb +5 -0
  542. data/lib/tdlib/types/text_entity_type/bot_command.rb +6 -0
  543. data/lib/tdlib/types/text_entity_type/cashtag.rb +6 -0
  544. data/lib/tdlib/types/text_entity_type/code.rb +5 -0
  545. data/lib/tdlib/types/text_entity_type/email_address.rb +5 -0
  546. data/lib/tdlib/types/text_entity_type/hashtag.rb +5 -0
  547. data/lib/tdlib/types/text_entity_type/italic.rb +5 -0
  548. data/lib/tdlib/types/text_entity_type/mention.rb +5 -0
  549. data/lib/tdlib/types/text_entity_type/mention_name.rb +8 -0
  550. data/lib/tdlib/types/text_entity_type/phone_number.rb +5 -0
  551. data/lib/tdlib/types/text_entity_type/pre.rb +5 -0
  552. data/lib/tdlib/types/text_entity_type/pre_code.rb +8 -0
  553. data/lib/tdlib/types/text_entity_type/text_url.rb +8 -0
  554. data/lib/tdlib/types/text_entity_type/url.rb +5 -0
  555. data/lib/tdlib/types/text_parse_mode.rb +11 -0
  556. data/lib/tdlib/types/text_parse_mode/html.rb +5 -0
  557. data/lib/tdlib/types/text_parse_mode/markdown.rb +5 -0
  558. data/lib/tdlib/types/top_chat_category.rb +15 -0
  559. data/lib/tdlib/types/top_chat_category/bots.rb +5 -0
  560. data/lib/tdlib/types/top_chat_category/calls.rb +5 -0
  561. data/lib/tdlib/types/top_chat_category/channels.rb +5 -0
  562. data/lib/tdlib/types/top_chat_category/groups.rb +5 -0
  563. data/lib/tdlib/types/top_chat_category/inline_bots.rb +5 -0
  564. data/lib/tdlib/types/top_chat_category/users.rb +5 -0
  565. data/lib/tdlib/types/update.rb +70 -0
  566. data/lib/tdlib/types/update/authorization_state.rb +8 -0
  567. data/lib/tdlib/types/update/basic_group.rb +9 -0
  568. data/lib/tdlib/types/update/basic_group_full_info.rb +10 -0
  569. data/lib/tdlib/types/update/call.rb +8 -0
  570. data/lib/tdlib/types/update/chat_default_disable_notification.rb +10 -0
  571. data/lib/tdlib/types/update/chat_draft_message.rb +14 -0
  572. data/lib/tdlib/types/update/chat_is_marked_as_unread.rb +10 -0
  573. data/lib/tdlib/types/update/chat_is_pinned.rb +12 -0
  574. data/lib/tdlib/types/update/chat_is_sponsored.rb +12 -0
  575. data/lib/tdlib/types/update/chat_last_message.rb +14 -0
  576. data/lib/tdlib/types/update/chat_notification_settings.rb +10 -0
  577. data/lib/tdlib/types/update/chat_order.rb +11 -0
  578. data/lib/tdlib/types/update/chat_photo.rb +10 -0
  579. data/lib/tdlib/types/update/chat_read_inbox.rb +12 -0
  580. data/lib/tdlib/types/update/chat_read_outbox.rb +10 -0
  581. data/lib/tdlib/types/update/chat_reply_markup.rb +13 -0
  582. data/lib/tdlib/types/update/chat_title.rb +10 -0
  583. data/lib/tdlib/types/update/chat_unread_mention_count.rb +10 -0
  584. data/lib/tdlib/types/update/connection_state.rb +8 -0
  585. data/lib/tdlib/types/update/delete_messages.rb +16 -0
  586. data/lib/tdlib/types/update/favorite_stickers.rb +8 -0
  587. data/lib/tdlib/types/update/file.rb +8 -0
  588. data/lib/tdlib/types/update/file_generation_start.rb +17 -0
  589. data/lib/tdlib/types/update/file_generation_stop.rb +8 -0
  590. data/lib/tdlib/types/update/installed_sticker_sets.rb +10 -0
  591. data/lib/tdlib/types/update/language_pack_strings.rb +12 -0
  592. data/lib/tdlib/types/update/message_content.rb +12 -0
  593. data/lib/tdlib/types/update/message_content_opened.rb +12 -0
  594. data/lib/tdlib/types/update/message_edited.rb +15 -0
  595. data/lib/tdlib/types/update/message_mention_read.rb +12 -0
  596. data/lib/tdlib/types/update/message_send_acknowledged.rb +14 -0
  597. data/lib/tdlib/types/update/message_send_failed.rb +16 -0
  598. data/lib/tdlib/types/update/message_send_succeeded.rb +11 -0
  599. data/lib/tdlib/types/update/message_views.rb +12 -0
  600. data/lib/tdlib/types/update/new_callback_query.rb +18 -0
  601. data/lib/tdlib/types/update/new_chat.rb +10 -0
  602. data/lib/tdlib/types/update/new_chosen_inline_result.rb +16 -0
  603. data/lib/tdlib/types/update/new_custom_event.rb +8 -0
  604. data/lib/tdlib/types/update/new_custom_query.rb +12 -0
  605. data/lib/tdlib/types/update/new_inline_callback_query.rb +16 -0
  606. data/lib/tdlib/types/update/new_inline_query.rb +16 -0
  607. data/lib/tdlib/types/update/new_message.rb +12 -0
  608. data/lib/tdlib/types/update/new_pre_checkout_query.rb +22 -0
  609. data/lib/tdlib/types/update/new_shipping_query.rb +15 -0
  610. data/lib/tdlib/types/update/option.rb +10 -0
  611. data/lib/tdlib/types/update/recent_stickers.rb +11 -0
  612. data/lib/tdlib/types/update/saved_animations.rb +8 -0
  613. data/lib/tdlib/types/update/scope_notification_settings.rb +10 -0
  614. data/lib/tdlib/types/update/secret_chat.rb +9 -0
  615. data/lib/tdlib/types/update/service_notification.rb +13 -0
  616. data/lib/tdlib/types/update/supergroup.rb +9 -0
  617. data/lib/tdlib/types/update/supergroup_full_info.rb +10 -0
  618. data/lib/tdlib/types/update/terms_of_service.rb +12 -0
  619. data/lib/tdlib/types/update/trending_sticker_sets.rb +8 -0
  620. data/lib/tdlib/types/update/unread_chat_count.rb +16 -0
  621. data/lib/tdlib/types/update/unread_message_count.rb +11 -0
  622. data/lib/tdlib/types/update/user.rb +9 -0
  623. data/lib/tdlib/types/update/user_chat_action.rb +12 -0
  624. data/lib/tdlib/types/update/user_full_info.rb +10 -0
  625. data/lib/tdlib/types/update/user_privacy_setting_rules.rb +10 -0
  626. data/lib/tdlib/types/update/user_status.rb +10 -0
  627. data/lib/tdlib/types/user.rb +41 -0
  628. data/lib/tdlib/types/user_full_info.rb +21 -0
  629. data/lib/tdlib/types/user_privacy_setting.rb +12 -0
  630. data/lib/tdlib/types/user_privacy_setting/allow_calls.rb +5 -0
  631. data/lib/tdlib/types/user_privacy_setting/allow_chat_invites.rb +5 -0
  632. data/lib/tdlib/types/user_privacy_setting/show_status.rb +5 -0
  633. data/lib/tdlib/types/user_privacy_setting_rule.rb +15 -0
  634. data/lib/tdlib/types/user_privacy_setting_rule/allow_all.rb +5 -0
  635. data/lib/tdlib/types/user_privacy_setting_rule/allow_contacts.rb +5 -0
  636. data/lib/tdlib/types/user_privacy_setting_rule/allow_users.rb +8 -0
  637. data/lib/tdlib/types/user_privacy_setting_rule/restrict_all.rb +5 -0
  638. data/lib/tdlib/types/user_privacy_setting_rule/restrict_contacts.rb +5 -0
  639. data/lib/tdlib/types/user_privacy_setting_rule/restrict_users.rb +8 -0
  640. data/lib/tdlib/types/user_privacy_setting_rules.rb +11 -0
  641. data/lib/tdlib/types/user_profile_photos.rb +10 -0
  642. data/lib/tdlib/types/user_status.rb +15 -0
  643. data/lib/tdlib/types/user_status/empty.rb +5 -0
  644. data/lib/tdlib/types/user_status/last_month.rb +5 -0
  645. data/lib/tdlib/types/user_status/last_week.rb +5 -0
  646. data/lib/tdlib/types/user_status/offline.rb +8 -0
  647. data/lib/tdlib/types/user_status/online.rb +8 -0
  648. data/lib/tdlib/types/user_status/recently.rb +5 -0
  649. data/lib/tdlib/types/user_type.rb +14 -0
  650. data/lib/tdlib/types/user_type/bot.rb +18 -0
  651. data/lib/tdlib/types/user_type/deleted.rb +7 -0
  652. data/lib/tdlib/types/user_type/regular.rb +5 -0
  653. data/lib/tdlib/types/user_type/unknown.rb +7 -0
  654. data/lib/tdlib/types/users.rb +10 -0
  655. data/lib/tdlib/types/validated_order_info.rb +11 -0
  656. data/lib/tdlib/types/venue.rb +19 -0
  657. data/lib/tdlib/types/video.rb +24 -0
  658. data/lib/tdlib/types/video_note.rb +15 -0
  659. data/lib/tdlib/types/voice_note.rb +16 -0
  660. data/lib/tdlib/types/wallpaper.rb +14 -0
  661. data/lib/tdlib/types/wallpapers.rb +8 -0
  662. data/lib/tdlib/types/web_page.rb +51 -0
  663. data/lib/tdlib/types/web_page_instant_view.rb +11 -0
  664. data/lib/tdlib/update_handler.rb +36 -0
  665. data/lib/tdlib/update_manager.rb +21 -11
  666. data/lib/tdlib/version.rb +1 -1
  667. data/spec/integration/tdlib_spec.rb +20 -15
  668. data/tdlib-ruby.gemspec +7 -12
  669. metadata +720 -9
  670. data/lib/tdlib/utils.rb +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4843f71309fcaf5799ce384c56d1df0a7d7d36131a5e162e3f3fd6d14dda68f7
4
- data.tar.gz: eca6f03dd7e531f6a80595c562954427b71528c84d321a77e8babac791af9692
3
+ metadata.gz: 1c9e152ea091aaa6715f0ce9188a89f59c34e0c60600344ddb37454409956c99
4
+ data.tar.gz: 83c128d9e58d4e0fdac3c04a071e5646090d77ca06be93829af437f33174a77c
5
5
  SHA512:
6
- metadata.gz: 3618eb07efe5081c116efb1ee9cc0cf39ccff51bd1fd1933e3c0e1690b27e1be12087faf91096e1636fc00a55f3edb9797b8c616e38418187fd2a3b2b3bdb157
7
- data.tar.gz: a87798327ce6f1995fbce7f2c5a216ed7c4baa01b65bb81cc109fbca7c757f8e20dce56b2e373a703e83e7ddaaf4af6e69cbc697e8fd845ef2d8b7c4c86c7ad3
6
+ metadata.gz: 6a1bc253a33dac9e246fb897611de97436eecbdafb15cee2c4c4b7dc8630b2bd4fd5e40e8ec7085c0f6e752173dde0b56bddca4a6fbd64dd9b5e02eff47eb71d
7
+ data.tar.gz: 6f9e04ecea637478035631306ea0ea8e25e78f8d5fc9e89e51d0a538ff1425b2102db6c17432558964a4d0edf6df5c10df77939b71042202667d65d8e1142cb5
data/.gitignore CHANGED
@@ -6,3 +6,4 @@
6
6
  /vendor/cache/*.gem
7
7
  /.vscode/
8
8
  /.yardoc/
9
+ /.idea/
@@ -0,0 +1,3 @@
1
+ [submodule "td"]
2
+ path = td
3
+ url = https://github.com/tdlib/td.git
@@ -1,7 +1,7 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.3.6
4
- - 2.5.0
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
@@ -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('updateAuthorizationState') do |update|
58
- next unless update.dig('authorization_state', '@type') == 'authorizationStateWaitPhoneNumber'
59
- state = :wait_phone
60
- end
61
-
62
- client.on('updateAuthorizationState') do |update|
63
- next unless update.dig('authorization_state', '@type') == 'authorizationStateWaitCode'
64
- state = :wait_code
65
- end
66
-
67
- client.on('updateAuthorizationState') do |update|
68
- next unless update.dig('authorization_state', '@type') == 'authorizationStateReady'
69
- state = :ready
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 :wait_phone
75
- p 'Please, enter your phone number:'
83
+ when :wait_phone_number
84
+ puts 'Please, enter your phone number:'
76
85
  phone = STDIN.gets.strip
77
- params = {
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
- p 'Please, enter code from SMS:'
88
+ puts 'Please, enter code from SMS:'
84
89
  code = STDIN.gets.strip
85
- params = {
86
- '@type' => 'checkAuthenticationCode',
87
- 'code' => code
88
- }
89
- client.broadcast_and_receive(params)
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 = client.broadcast_and_receive('@type' => 'getMe')
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.close
103
+ client.dispose
98
104
  end
99
105
 
100
106
  p @me
101
107
  ```
102
108
 
103
- ## TD::Client#broadcast
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)
@@ -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
+ `
@@ -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!"