mtproto 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/ext/aes_ige/extconf.rb +3 -9
  3. data/ext/factorization/extconf.rb +2 -0
  4. data/lib/mtproto/auth_key_generator.rb +68 -105
  5. data/lib/mtproto/binary.rb +21 -0
  6. data/lib/mtproto/client/api/check_password.rb +41 -0
  7. data/lib/mtproto/client/api/export_login_token.rb +27 -0
  8. data/lib/mtproto/client/api/get_updates_difference.rb +21 -0
  9. data/lib/mtproto/client/api/get_updates_state.rb +14 -0
  10. data/lib/mtproto/client/api/get_users.rb +14 -0
  11. data/lib/mtproto/client/api/import_login_token.rb +23 -0
  12. data/lib/mtproto/client/api/send_code.rb +21 -0
  13. data/lib/mtproto/client/api/sign_in.rb +27 -0
  14. data/lib/mtproto/client/api.rb +28 -0
  15. data/lib/mtproto/client/rpc/response.rb +63 -0
  16. data/lib/mtproto/client/rpc.rb +61 -125
  17. data/lib/mtproto/client.rb +142 -31
  18. data/lib/mtproto/crypto/dh_key_exchange.rb +1 -2
  19. data/lib/mtproto/crypto/dh_validator.rb +17 -19
  20. data/lib/mtproto/crypto/factorization.rb +1 -1
  21. data/lib/mtproto/crypto/rsa_key.rb +2 -2
  22. data/lib/mtproto/crypto/srp.rb +117 -0
  23. data/lib/mtproto/delegate_methods.rb +11 -0
  24. data/lib/mtproto/message/message.rb +85 -0
  25. data/lib/mtproto/session.rb +1 -1
  26. data/lib/mtproto/tl/constructors.rb +2269 -0
  27. data/lib/mtproto/tl/object.rb +25 -0
  28. data/lib/mtproto/tl/objects/account_password.rb +72 -0
  29. data/lib/mtproto/tl/objects/authorization.rb +73 -0
  30. data/lib/mtproto/tl/objects/check_password.rb +46 -0
  31. data/lib/mtproto/tl/objects/client_dh_inner_data.rb +47 -0
  32. data/lib/mtproto/tl/objects/dh_gen_response.rb +50 -0
  33. data/lib/mtproto/tl/objects/export_login_token.rb +51 -0
  34. data/lib/mtproto/tl/objects/get_config.rb +15 -0
  35. data/lib/mtproto/tl/objects/get_difference.rb +36 -0
  36. data/lib/mtproto/tl/objects/get_password.rb +15 -0
  37. data/lib/mtproto/tl/objects/get_state.rb +15 -0
  38. data/lib/mtproto/tl/objects/get_users.rb +20 -0
  39. data/lib/mtproto/tl/objects/help_config.rb +77 -0
  40. data/lib/mtproto/tl/objects/import_login_token.rb +39 -0
  41. data/lib/mtproto/tl/objects/init_connection.rb +59 -0
  42. data/lib/mtproto/tl/objects/invoke_with_layer.rb +22 -0
  43. data/lib/mtproto/tl/objects/login_token.rb +82 -0
  44. data/lib/mtproto/tl/objects/pq_inner_data.rb +69 -0
  45. data/lib/mtproto/tl/objects/req_dh_params.rb +65 -0
  46. data/lib/mtproto/tl/objects/req_pq_multi.rb +23 -0
  47. data/lib/mtproto/tl/objects/res_pq.rb +75 -0
  48. data/lib/mtproto/tl/objects/send_code.rb +50 -0
  49. data/lib/mtproto/tl/objects/sent_code.rb +79 -0
  50. data/lib/mtproto/tl/objects/server_dh_inner_data.rb +74 -0
  51. data/lib/mtproto/tl/objects/server_dh_params.rb +53 -0
  52. data/lib/mtproto/tl/objects/set_client_dh_params.rb +48 -0
  53. data/lib/mtproto/tl/objects/sign_in.rb +47 -0
  54. data/lib/mtproto/tl/objects/update.rb +80 -0
  55. data/lib/mtproto/tl/objects/update_short.rb +22 -0
  56. data/lib/mtproto/tl/objects/update_short_message.rb +67 -0
  57. data/lib/mtproto/tl/objects/updates_difference.rb +157 -0
  58. data/lib/mtproto/tl/objects/updates_state.rb +37 -0
  59. data/lib/mtproto/tl/objects/users.rb +86 -0
  60. data/lib/mtproto/transport/abridged_packet_codec.rb +35 -12
  61. data/lib/mtproto/transport/connection.rb +23 -0
  62. data/lib/mtproto/transport/errors.rb +11 -0
  63. data/lib/mtproto/transport/packet.rb +19 -0
  64. data/lib/mtproto/transport/tcp_connection.rb +57 -46
  65. data/lib/mtproto/type/bad_msg_notification.rb +10 -10
  66. data/lib/mtproto/type/gzip_packed.rb +5 -3
  67. data/lib/mtproto/type/message.rb +2 -2
  68. data/lib/mtproto/type/rpc_error.rb +0 -1
  69. data/lib/mtproto/updates_poller.rb +37 -33
  70. data/lib/mtproto/version.rb +1 -1
  71. data/lib/mtproto.rb +11 -17
  72. data/scripts/generate_constructors.rb +65 -0
  73. metadata +62 -51
  74. data/lib/mtproto/async/middleware/base.rb +0 -17
  75. data/lib/mtproto/async/middleware/flood_wait.rb +0 -42
  76. data/lib/mtproto/async/request.rb +0 -18
  77. data/lib/mtproto/async/request_queue.rb +0 -63
  78. data/lib/mtproto/async_client.rb +0 -201
  79. data/lib/mtproto/rpc/get_config.rb +0 -34
  80. data/lib/mtproto/rpc/get_contacts.rb +0 -29
  81. data/lib/mtproto/rpc/get_updates_difference.rb +0 -51
  82. data/lib/mtproto/rpc/get_updates_state.rb +0 -29
  83. data/lib/mtproto/rpc/get_users.rb +0 -29
  84. data/lib/mtproto/rpc/ping.rb +0 -33
  85. data/lib/mtproto/rpc/send_code.rb +0 -41
  86. data/lib/mtproto/rpc/send_message.rb +0 -47
  87. data/lib/mtproto/rpc/sign_in.rb +0 -48
  88. data/lib/mtproto/type/auth_key/dh_gen_response.rb +0 -37
  89. data/lib/mtproto/type/auth_key/req_dh_params.rb +0 -31
  90. data/lib/mtproto/type/auth_key/req_pq_multi.rb +0 -18
  91. data/lib/mtproto/type/auth_key/res_pq.rb +0 -62
  92. data/lib/mtproto/type/auth_key/server_dh_params.rb +0 -43
  93. data/lib/mtproto/type/auth_key/set_client_dh_params.rb +0 -25
  94. data/lib/mtproto/type/code_settings.rb +0 -25
  95. data/lib/mtproto/type/config.rb +0 -124
  96. data/lib/mtproto/type/rpc/auth/authorization.rb +0 -107
  97. data/lib/mtproto/type/rpc/auth/send_code.rb +0 -28
  98. data/lib/mtproto/type/rpc/auth/sent_code.rb +0 -36
  99. data/lib/mtproto/type/rpc/auth/sign_in.rb +0 -32
  100. data/lib/mtproto/type/rpc/contacts/contacts.rb +0 -155
  101. data/lib/mtproto/type/rpc/contacts/get_contacts.rb +0 -18
  102. data/lib/mtproto/type/rpc/help/config.rb +0 -35
  103. data/lib/mtproto/type/rpc/help/get_config.rb +0 -17
  104. data/lib/mtproto/type/rpc/init_connection.rb +0 -28
  105. data/lib/mtproto/type/rpc/invoke_with_layer.rb +0 -19
  106. data/lib/mtproto/type/rpc/messages/send_message.rb +0 -43
  107. data/lib/mtproto/type/rpc/messages/updates.rb +0 -87
  108. data/lib/mtproto/type/rpc/ping.rb +0 -18
  109. data/lib/mtproto/type/rpc/pong.rb +0 -46
  110. data/lib/mtproto/type/rpc/updates/difference.rb +0 -332
  111. data/lib/mtproto/type/rpc/updates/get_difference.rb +0 -42
  112. data/lib/mtproto/type/rpc/updates/get_state.rb +0 -17
  113. data/lib/mtproto/type/rpc/updates/state.rb +0 -59
  114. data/lib/mtproto/type/rpc/users/get_users.rb +0 -25
  115. data/lib/mtproto/type/rpc/users/users.rb +0 -99
  116. data/lib/mtproto/type/sent_code.rb +0 -128
@@ -1,128 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module MTProto
4
- module Type
5
- class SentCode
6
- CONSTRUCTOR = 0x5e002502
7
-
8
- attr_reader :flags, :type, :phone_code_hash, :next_type, :timeout
9
-
10
- def self.deserialize(data)
11
- offset = 4
12
-
13
- flags = data[offset, 4].unpack1('L<')
14
- offset += 4
15
-
16
- type, type_bytes_read = SentCodeType.deserialize_from(data[offset..])
17
- offset += type_bytes_read
18
-
19
- phone_code_hash_length = data[offset].ord
20
- offset += 1
21
-
22
- phone_code_hash = data[offset, phone_code_hash_length]
23
- offset += phone_code_hash_length
24
-
25
- padding = (4 - ((phone_code_hash_length + 1) % 4)) % 4
26
- offset += padding
27
-
28
- next_type = nil
29
- if (flags & (1 << 1)) != 0
30
- next_type, next_type_bytes_read = CodeType.deserialize_from(data[offset..])
31
- offset += next_type_bytes_read
32
- end
33
-
34
- timeout = nil
35
- if (flags & (1 << 2)) != 0
36
- timeout = data[offset, 4].unpack1('L<')
37
- end
38
-
39
- new(
40
- flags: flags,
41
- type: type,
42
- phone_code_hash: phone_code_hash,
43
- next_type: next_type,
44
- timeout: timeout
45
- )
46
- end
47
-
48
- def initialize(flags:, type:, phone_code_hash:, next_type: nil, timeout: nil)
49
- @flags = flags
50
- @type = type
51
- @phone_code_hash = phone_code_hash
52
- @next_type = next_type
53
- @timeout = timeout
54
- end
55
-
56
- def to_h
57
- {
58
- phone_code_hash: @phone_code_hash,
59
- type: @type,
60
- next_type: @next_type,
61
- timeout: @timeout
62
- }.compact
63
- end
64
- end
65
-
66
- module SentCodeType
67
- def self.deserialize_from(data)
68
- constructor = data[0, 4].unpack1('L<')
69
- offset = 4
70
-
71
- case constructor
72
- when 0x3dbb5986 # auth.sentCodeTypeApp
73
- length = data[offset, 4].unpack1('L<')
74
- offset += 4
75
- [{ _: :sent_code_type_app, length: length }, offset]
76
- when 0xc000bba2 # auth.sentCodeTypeSms
77
- length = data[offset, 4].unpack1('L<')
78
- offset += 4
79
- [{ _: :sent_code_type_sms, length: length }, offset]
80
- when 0x5353e5a7 # auth.sentCodeTypeCall
81
- length = data[offset, 4].unpack1('L<')
82
- offset += 4
83
- [{ _: :sent_code_type_call, length: length }, offset]
84
- when 0xab03c6d9 # auth.sentCodeTypeFlashCall
85
- pattern_length = data[offset].ord
86
- offset += 1
87
- pattern = data[offset, pattern_length]
88
- offset += pattern_length
89
- padding = (4 - ((pattern_length + 1) % 4)) % 4
90
- offset += padding
91
- [{ _: :sent_code_type_flash_call, pattern: pattern }, offset]
92
- when 0x82006484 # auth.sentCodeTypeMissedCall
93
- prefix_length = data[offset].ord
94
- offset += 1
95
- prefix = data[offset, prefix_length]
96
- offset += prefix_length
97
- padding = (4 - ((prefix_length + 1) % 4)) % 4
98
- offset += padding
99
- length = data[offset, 4].unpack1('L<')
100
- offset += 4
101
- [{ _: :sent_code_type_missed_call, prefix: prefix, length: length }, offset]
102
- else
103
- raise "Unknown SentCodeType constructor: 0x#{constructor.to_s(16)}"
104
- end
105
- end
106
- end
107
-
108
- module CodeType
109
- def self.deserialize_from(data)
110
- constructor = data[0, 4].unpack1('L<')
111
- offset = 4
112
-
113
- case constructor
114
- when 0x72a3158c # codeTypeSms
115
- [{ _: :code_type_sms }, offset]
116
- when 0x741cd3e3 # codeTypeCall
117
- [{ _: :code_type_call }, offset]
118
- when 0x226ccefb # codeTypeFlashCall
119
- [{ _: :code_type_flash_call }, offset]
120
- when 0xd61ad6ee # codeTypeMissedCall
121
- [{ _: :code_type_missed_call }, offset]
122
- else
123
- raise "Unknown CodeType constructor: 0x#{constructor.to_s(16)}"
124
- end
125
- end
126
- end
127
- end
128
- end