mtproto 0.0.13 → 0.0.14
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.
- checksums.yaml +4 -4
- data/FUTURE.md +9 -0
- data/docs/test_architecture_level1.md +237 -0
- data/lib/mtproto/auth_key_generator.rb +5 -5
- data/lib/mtproto/client/api/get_contacts.rb +14 -0
- data/lib/mtproto/client/api/send_message.rb +15 -0
- data/lib/mtproto/client/api.rb +2 -0
- data/lib/mtproto/client/rpc/response.rb +1 -1
- data/lib/mtproto/client/rpc.rb +2 -2
- data/lib/mtproto/client.rb +28 -18
- data/lib/mtproto/tl/constructors.rb +26 -0
- data/lib/mtproto/tl/object.rb +1 -1
- data/lib/mtproto/tl/objects/account_password.rb +1 -1
- data/lib/mtproto/tl/objects/authorization.rb +1 -1
- data/lib/mtproto/tl/objects/channels_create_channel.rb +48 -0
- data/lib/mtproto/tl/objects/channels_delete_messages.rb +32 -0
- data/lib/mtproto/tl/objects/channels_delete_participant_history.rb +34 -0
- data/lib/mtproto/tl/objects/channels_edit_banned.rb +54 -0
- data/lib/mtproto/tl/objects/channels_get_messages.rb +33 -0
- data/lib/mtproto/tl/objects/channels_get_participant.rb +36 -0
- data/lib/mtproto/tl/objects/channels_join_channel.rb +22 -0
- data/lib/mtproto/tl/objects/channels_leave_channel.rb +22 -0
- data/lib/mtproto/tl/objects/channels_report_spam.rb +37 -0
- data/lib/mtproto/tl/objects/check_password.rb +1 -1
- data/lib/mtproto/tl/objects/client_dh_inner_data.rb +1 -1
- data/lib/mtproto/tl/objects/contacts.rb +156 -0
- data/lib/mtproto/tl/objects/delete_messages.rb +25 -0
- data/lib/mtproto/tl/objects/dh_gen_response.rb +1 -1
- data/lib/mtproto/tl/objects/dialogs.rb +8 -4
- data/lib/mtproto/tl/objects/edit_message.rb +58 -0
- data/lib/mtproto/tl/objects/export_login_token.rb +1 -1
- data/lib/mtproto/tl/objects/forward_messages.rb +49 -0
- data/lib/mtproto/tl/objects/get_channel_difference.rb +41 -0
- data/lib/mtproto/tl/objects/get_config.rb +1 -1
- data/lib/mtproto/tl/objects/get_contacts.rb +17 -0
- data/lib/mtproto/tl/objects/get_dialogs.rb +1 -1
- data/lib/mtproto/tl/objects/get_difference.rb +1 -1
- data/lib/mtproto/tl/objects/get_file.rb +54 -0
- data/lib/mtproto/tl/objects/get_full_channel.rb +29 -0
- data/lib/mtproto/tl/objects/get_full_user.rb +28 -0
- data/lib/mtproto/tl/objects/get_history.rb +1 -1
- data/lib/mtproto/tl/objects/get_messages_reactions.rb +39 -0
- data/lib/mtproto/tl/objects/get_password.rb +1 -1
- data/lib/mtproto/tl/objects/get_state.rb +1 -1
- data/lib/mtproto/tl/objects/get_users.rb +1 -1
- data/lib/mtproto/tl/objects/help_config.rb +1 -1
- data/lib/mtproto/tl/objects/import_bot_authorization.rb +44 -0
- data/lib/mtproto/tl/objects/import_login_token.rb +1 -1
- data/lib/mtproto/tl/objects/init_connection.rb +2 -2
- data/lib/mtproto/tl/objects/invite_to_channel.rb +35 -0
- data/lib/mtproto/tl/objects/invoke_with_layer.rb +2 -2
- data/lib/mtproto/tl/objects/login_token.rb +2 -2
- data/lib/mtproto/tl/objects/messages.rb +1 -1
- data/lib/mtproto/tl/objects/pq_inner_data.rb +1 -1
- data/lib/mtproto/tl/objects/raw_response.rb +29 -0
- data/lib/mtproto/tl/objects/req_dh_params.rb +1 -1
- data/lib/mtproto/tl/objects/req_pq_multi.rb +1 -1
- data/lib/mtproto/tl/objects/res_pq.rb +1 -1
- data/lib/mtproto/tl/objects/resolve_username.rb +40 -0
- data/lib/mtproto/tl/objects/save_file_part.rb +40 -0
- data/lib/mtproto/tl/objects/send_code.rb +1 -1
- data/lib/mtproto/tl/objects/send_media.rb +85 -0
- data/lib/mtproto/tl/objects/send_message.rb +70 -0
- data/lib/mtproto/tl/objects/send_reaction.rb +68 -0
- data/lib/mtproto/tl/objects/sent_code.rb +1 -1
- data/lib/mtproto/tl/objects/server_dh_inner_data.rb +1 -1
- data/lib/mtproto/tl/objects/server_dh_params.rb +1 -1
- data/lib/mtproto/tl/objects/set_client_dh_params.rb +1 -1
- data/lib/mtproto/tl/objects/sign_in.rb +1 -1
- data/lib/mtproto/tl/objects/update.rb +1 -1
- data/lib/mtproto/tl/objects/update_short.rb +2 -2
- data/lib/mtproto/tl/objects/update_short_message.rb +1 -1
- data/lib/mtproto/tl/objects/update_short_sent_message.rb +36 -0
- data/lib/mtproto/tl/objects/update_username.rb +39 -0
- data/lib/mtproto/tl/objects/updates_difference.rb +2 -2
- data/lib/mtproto/tl/objects/updates_state.rb +1 -1
- data/lib/mtproto/tl/objects/users.rb +1 -1
- data/lib/mtproto/version.rb +1 -1
- metadata +36 -1
|
@@ -5,7 +5,7 @@ module MTProto
|
|
|
5
5
|
class ServerDHInnerData
|
|
6
6
|
attr_reader :nonce, :server_nonce, :g, :dh_prime, :g_a, :server_time
|
|
7
7
|
|
|
8
|
-
def self.
|
|
8
|
+
def self.deserialize(bytes)
|
|
9
9
|
constructor = bytes[0, 4].unpack1('L<')
|
|
10
10
|
unless constructor == Constructors::SERVER_DH_INNER_DATA
|
|
11
11
|
raise "Unexpected constructor: 0x#{constructor.to_s(16)}"
|
|
@@ -10,9 +10,9 @@ module MTProto
|
|
|
10
10
|
@date = date
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
def self.
|
|
13
|
+
def self.deserialize(bytes)
|
|
14
14
|
date = bytes[-4, 4].unpack1('l<')
|
|
15
|
-
update = Update.
|
|
15
|
+
update = Update.deserialize(bytes[4...-4])
|
|
16
16
|
new(update, date)
|
|
17
17
|
end
|
|
18
18
|
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module MTProto
|
|
4
|
+
module TL
|
|
5
|
+
class UpdateShortSentMessage
|
|
6
|
+
attr_reader :flags, :id, :pts, :pts_count, :date
|
|
7
|
+
|
|
8
|
+
def initialize(flags:, id:, pts:, pts_count:, date:)
|
|
9
|
+
@flags = flags
|
|
10
|
+
@id = id
|
|
11
|
+
@pts = pts
|
|
12
|
+
@pts_count = pts_count
|
|
13
|
+
@date = date
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def out?
|
|
17
|
+
flags & (1 << 1) != 0
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.deserialize(bytes)
|
|
21
|
+
offset = 4 # skip constructor
|
|
22
|
+
flags = bytes[offset, 4].unpack1('L<')
|
|
23
|
+
offset += 4
|
|
24
|
+
id = bytes[offset, 4].unpack1('l<')
|
|
25
|
+
offset += 4
|
|
26
|
+
pts = bytes[offset, 4].unpack1('l<')
|
|
27
|
+
offset += 4
|
|
28
|
+
pts_count = bytes[offset, 4].unpack1('l<')
|
|
29
|
+
offset += 4
|
|
30
|
+
date = bytes[offset, 4].unpack1('l<')
|
|
31
|
+
|
|
32
|
+
new(flags: flags, id: id, pts: pts, pts_count: pts_count, date: date)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module MTProto
|
|
4
|
+
module TL
|
|
5
|
+
class UpdateUsername
|
|
6
|
+
include Binary
|
|
7
|
+
|
|
8
|
+
CONSTRUCTOR = 0x3e0bdd7c
|
|
9
|
+
|
|
10
|
+
def initialize(username:)
|
|
11
|
+
@username = username
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def serialize
|
|
15
|
+
result = u32_b(CONSTRUCTOR)
|
|
16
|
+
result += serialize_tl_string(@username)
|
|
17
|
+
result
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def serialize_tl_string(str)
|
|
23
|
+
bytes = str.encode('UTF-8').bytes
|
|
24
|
+
length = bytes.length
|
|
25
|
+
|
|
26
|
+
if length <= 253
|
|
27
|
+
[length] + bytes + padding(length + 1)
|
|
28
|
+
else
|
|
29
|
+
[254] + u32_b(length)[0, 3] + bytes + padding(length + 4)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def padding(current_length)
|
|
34
|
+
pad_length = (4 - (current_length % 4)) % 4
|
|
35
|
+
[0] * pad_length
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -22,7 +22,7 @@ module MTProto
|
|
|
22
22
|
@schema ||= Schema.new(SCHEMA_PATH)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
def self.
|
|
25
|
+
def self.deserialize(data)
|
|
26
26
|
constructor = data[0, 4].unpack1('L<')
|
|
27
27
|
|
|
28
28
|
case constructor
|
|
@@ -62,7 +62,7 @@ module MTProto
|
|
|
62
62
|
offset = schema.skip_vector(data, offset) # other_updates
|
|
63
63
|
offset = schema.skip_vector(data, offset) # chats
|
|
64
64
|
offset = schema.skip_vector(data, offset) # users
|
|
65
|
-
state = UpdatesState.
|
|
65
|
+
state = UpdatesState.deserialize(data[offset..])
|
|
66
66
|
|
|
67
67
|
new(
|
|
68
68
|
type: constructor == Constructors::UPDATES_DIFFERENCE ? :difference : :slice,
|
|
@@ -6,7 +6,7 @@ module MTProto
|
|
|
6
6
|
User = Struct.new(:id, :access_hash, :first_name, :last_name, :username, :phone, :flags, :flags2,
|
|
7
7
|
keyword_init: true)
|
|
8
8
|
|
|
9
|
-
def self.
|
|
9
|
+
def self.deserialize(data)
|
|
10
10
|
constructor = data[0, 4].unpack1('L<')
|
|
11
11
|
raise "Expected Vector constructor, got 0x#{constructor.to_s(16)}" unless constructor == Constructors::VECTOR
|
|
12
12
|
|
data/lib/mtproto/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mtproto
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.14
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Artem Levenkov
|
|
@@ -49,8 +49,10 @@ extra_rdoc_files: []
|
|
|
49
49
|
files:
|
|
50
50
|
- ".env.example"
|
|
51
51
|
- ".ruby-version"
|
|
52
|
+
- FUTURE.md
|
|
52
53
|
- Rakefile
|
|
53
54
|
- data/tl-schema.json
|
|
55
|
+
- docs/test_architecture_level1.md
|
|
54
56
|
- ext/aes_ige/aes_ige.c
|
|
55
57
|
- ext/aes_ige/extconf.rb
|
|
56
58
|
- ext/factorization/extconf.rb
|
|
@@ -62,6 +64,7 @@ files:
|
|
|
62
64
|
- lib/mtproto/client/api.rb
|
|
63
65
|
- lib/mtproto/client/api/check_password.rb
|
|
64
66
|
- lib/mtproto/client/api/export_login_token.rb
|
|
67
|
+
- lib/mtproto/client/api/get_contacts.rb
|
|
65
68
|
- lib/mtproto/client/api/get_dialogs.rb
|
|
66
69
|
- lib/mtproto/client/api/get_history.rb
|
|
67
70
|
- lib/mtproto/client/api/get_updates_difference.rb
|
|
@@ -69,6 +72,7 @@ files:
|
|
|
69
72
|
- lib/mtproto/client/api/get_users.rb
|
|
70
73
|
- lib/mtproto/client/api/import_login_token.rb
|
|
71
74
|
- lib/mtproto/client/api/send_code.rb
|
|
75
|
+
- lib/mtproto/client/api/send_message.rb
|
|
72
76
|
- lib/mtproto/client/api/sign_in.rb
|
|
73
77
|
- lib/mtproto/client/rpc.rb
|
|
74
78
|
- lib/mtproto/client/rpc/response.rb
|
|
@@ -92,22 +96,43 @@ files:
|
|
|
92
96
|
- lib/mtproto/tl/object.rb
|
|
93
97
|
- lib/mtproto/tl/objects/account_password.rb
|
|
94
98
|
- lib/mtproto/tl/objects/authorization.rb
|
|
99
|
+
- lib/mtproto/tl/objects/channels_create_channel.rb
|
|
100
|
+
- lib/mtproto/tl/objects/channels_delete_messages.rb
|
|
101
|
+
- lib/mtproto/tl/objects/channels_delete_participant_history.rb
|
|
102
|
+
- lib/mtproto/tl/objects/channels_edit_banned.rb
|
|
103
|
+
- lib/mtproto/tl/objects/channels_get_messages.rb
|
|
104
|
+
- lib/mtproto/tl/objects/channels_get_participant.rb
|
|
105
|
+
- lib/mtproto/tl/objects/channels_join_channel.rb
|
|
106
|
+
- lib/mtproto/tl/objects/channels_leave_channel.rb
|
|
107
|
+
- lib/mtproto/tl/objects/channels_report_spam.rb
|
|
95
108
|
- lib/mtproto/tl/objects/check_password.rb
|
|
96
109
|
- lib/mtproto/tl/objects/client_dh_inner_data.rb
|
|
110
|
+
- lib/mtproto/tl/objects/contacts.rb
|
|
111
|
+
- lib/mtproto/tl/objects/delete_messages.rb
|
|
97
112
|
- lib/mtproto/tl/objects/dh_gen_response.rb
|
|
98
113
|
- lib/mtproto/tl/objects/dialogs.rb
|
|
114
|
+
- lib/mtproto/tl/objects/edit_message.rb
|
|
99
115
|
- lib/mtproto/tl/objects/export_login_token.rb
|
|
116
|
+
- lib/mtproto/tl/objects/forward_messages.rb
|
|
117
|
+
- lib/mtproto/tl/objects/get_channel_difference.rb
|
|
100
118
|
- lib/mtproto/tl/objects/get_config.rb
|
|
119
|
+
- lib/mtproto/tl/objects/get_contacts.rb
|
|
101
120
|
- lib/mtproto/tl/objects/get_dialogs.rb
|
|
102
121
|
- lib/mtproto/tl/objects/get_difference.rb
|
|
122
|
+
- lib/mtproto/tl/objects/get_file.rb
|
|
123
|
+
- lib/mtproto/tl/objects/get_full_channel.rb
|
|
124
|
+
- lib/mtproto/tl/objects/get_full_user.rb
|
|
103
125
|
- lib/mtproto/tl/objects/get_history.rb
|
|
126
|
+
- lib/mtproto/tl/objects/get_messages_reactions.rb
|
|
104
127
|
- lib/mtproto/tl/objects/get_password.rb
|
|
105
128
|
- lib/mtproto/tl/objects/get_state.rb
|
|
106
129
|
- lib/mtproto/tl/objects/get_users.rb
|
|
107
130
|
- lib/mtproto/tl/objects/gzip_packed.rb
|
|
108
131
|
- lib/mtproto/tl/objects/help_config.rb
|
|
132
|
+
- lib/mtproto/tl/objects/import_bot_authorization.rb
|
|
109
133
|
- lib/mtproto/tl/objects/import_login_token.rb
|
|
110
134
|
- lib/mtproto/tl/objects/init_connection.rb
|
|
135
|
+
- lib/mtproto/tl/objects/invite_to_channel.rb
|
|
111
136
|
- lib/mtproto/tl/objects/invoke_with_layer.rb
|
|
112
137
|
- lib/mtproto/tl/objects/login_token.rb
|
|
113
138
|
- lib/mtproto/tl/objects/message.rb
|
|
@@ -115,11 +140,17 @@ files:
|
|
|
115
140
|
- lib/mtproto/tl/objects/msg_container.rb
|
|
116
141
|
- lib/mtproto/tl/objects/new_session_created.rb
|
|
117
142
|
- lib/mtproto/tl/objects/pq_inner_data.rb
|
|
143
|
+
- lib/mtproto/tl/objects/raw_response.rb
|
|
118
144
|
- lib/mtproto/tl/objects/req_dh_params.rb
|
|
119
145
|
- lib/mtproto/tl/objects/req_pq_multi.rb
|
|
120
146
|
- lib/mtproto/tl/objects/res_pq.rb
|
|
147
|
+
- lib/mtproto/tl/objects/resolve_username.rb
|
|
121
148
|
- lib/mtproto/tl/objects/rpc_error.rb
|
|
149
|
+
- lib/mtproto/tl/objects/save_file_part.rb
|
|
122
150
|
- lib/mtproto/tl/objects/send_code.rb
|
|
151
|
+
- lib/mtproto/tl/objects/send_media.rb
|
|
152
|
+
- lib/mtproto/tl/objects/send_message.rb
|
|
153
|
+
- lib/mtproto/tl/objects/send_reaction.rb
|
|
123
154
|
- lib/mtproto/tl/objects/sent_code.rb
|
|
124
155
|
- lib/mtproto/tl/objects/server_dh_inner_data.rb
|
|
125
156
|
- lib/mtproto/tl/objects/server_dh_params.rb
|
|
@@ -128,6 +159,8 @@ files:
|
|
|
128
159
|
- lib/mtproto/tl/objects/update.rb
|
|
129
160
|
- lib/mtproto/tl/objects/update_short.rb
|
|
130
161
|
- lib/mtproto/tl/objects/update_short_message.rb
|
|
162
|
+
- lib/mtproto/tl/objects/update_short_sent_message.rb
|
|
163
|
+
- lib/mtproto/tl/objects/update_username.rb
|
|
131
164
|
- lib/mtproto/tl/objects/updates_difference.rb
|
|
132
165
|
- lib/mtproto/tl/objects/updates_state.rb
|
|
133
166
|
- lib/mtproto/tl/objects/users.rb
|
|
@@ -151,6 +184,8 @@ metadata:
|
|
|
151
184
|
rdoc_options: []
|
|
152
185
|
require_paths:
|
|
153
186
|
- lib
|
|
187
|
+
- ext/aes_ige
|
|
188
|
+
- ext/factorization
|
|
154
189
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
155
190
|
requirements:
|
|
156
191
|
- - ">="
|