mtproto 0.0.6 → 0.0.7
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/lib/mtproto/auth_key_generator.rb +16 -6
- data/lib/mtproto/client/rpc.rb +141 -0
- data/lib/mtproto/client.rb +36 -181
- data/lib/mtproto/crypto/aes_ige.rb +1 -1
- data/lib/mtproto/crypto/factorization.rb +1 -1
- data/lib/mtproto/message_id.rb +13 -0
- data/lib/mtproto/rpc/get_config.rb +37 -0
- data/lib/mtproto/rpc/get_contacts.rb +22 -0
- data/lib/mtproto/rpc/get_updates_difference.rb +33 -0
- data/lib/mtproto/rpc/get_updates_state.rb +22 -0
- data/lib/mtproto/rpc/get_users.rb +22 -0
- data/lib/mtproto/rpc/ping.rb +26 -0
- data/lib/mtproto/rpc/send_code.rb +44 -0
- data/lib/mtproto/rpc/send_message.rb +31 -0
- data/lib/mtproto/rpc/sign_in.rb +52 -0
- data/lib/mtproto/tl/auth_key/dh_gen_response.rb +37 -0
- data/lib/mtproto/tl/auth_key/req_dh_params.rb +31 -0
- data/lib/mtproto/tl/auth_key/req_pq_multi.rb +18 -0
- data/lib/mtproto/tl/auth_key/res_pq.rb +62 -0
- data/lib/mtproto/tl/auth_key/server_dh_params.rb +43 -0
- data/lib/mtproto/tl/auth_key/set_client_dh_params.rb +25 -0
- data/lib/mtproto/tl/message.rb +2 -216
- data/lib/mtproto/tl/method_builder.rb +29 -0
- data/lib/mtproto/tl/rpc/auth/authorization.rb +107 -0
- data/lib/mtproto/tl/rpc/auth/send_code.rb +28 -0
- data/lib/mtproto/tl/rpc/auth/sent_code.rb +36 -0
- data/lib/mtproto/tl/rpc/auth/sign_in.rb +32 -0
- data/lib/mtproto/tl/rpc/contacts/contacts.rb +155 -0
- data/lib/mtproto/tl/rpc/contacts/get_contacts.rb +18 -0
- data/lib/mtproto/tl/rpc/help/config.rb +35 -0
- data/lib/mtproto/tl/rpc/help/get_config.rb +17 -0
- data/lib/mtproto/tl/rpc/messages/send_message.rb +43 -0
- data/lib/mtproto/tl/rpc/messages/updates.rb +87 -0
- data/lib/mtproto/tl/rpc/ping.rb +18 -0
- data/lib/mtproto/tl/rpc/pong.rb +46 -0
- data/lib/mtproto/tl/rpc/updates/difference.rb +332 -0
- data/lib/mtproto/tl/rpc/updates/get_difference.rb +42 -0
- data/lib/mtproto/tl/rpc/updates/get_state.rb +17 -0
- data/lib/mtproto/tl/rpc/updates/state.rb +59 -0
- data/lib/mtproto/tl/rpc/users/get_users.rb +25 -0
- data/lib/mtproto/tl/rpc/users/users.rb +99 -0
- data/lib/mtproto/updates_poller.rb +111 -0
- data/lib/mtproto/version.rb +1 -1
- data/lib/mtproto.rb +10 -1
- metadata +53 -5
- data/ext/aes_ige/Makefile +0 -273
- data/ext/factorization/Makefile +0 -273
- data/lib/mtproto/connection.rb +0 -103
data/lib/mtproto/connection.rb
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module MTProto
|
|
4
|
-
class Connection
|
|
5
|
-
attr_reader :client
|
|
6
|
-
|
|
7
|
-
def initialize(api_id: nil, api_hash: nil, host:, port: 443, public_key:, dc_number:, test_mode: false, timeout: 10)
|
|
8
|
-
@client = Client.new(
|
|
9
|
-
api_id: api_id,
|
|
10
|
-
api_hash: api_hash,
|
|
11
|
-
host: host,
|
|
12
|
-
port: port,
|
|
13
|
-
public_key: public_key,
|
|
14
|
-
dc_number: dc_number,
|
|
15
|
-
test_mode: test_mode,
|
|
16
|
-
timeout: timeout
|
|
17
|
-
)
|
|
18
|
-
@connected = false
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def connect!
|
|
22
|
-
return if @connected
|
|
23
|
-
|
|
24
|
-
@client.connect!
|
|
25
|
-
@client.make_auth_key
|
|
26
|
-
@connected = true
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def disconnect!
|
|
30
|
-
@client.disconnect! if @connected
|
|
31
|
-
@connected = false
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def ping(ping_id = nil)
|
|
35
|
-
raise NotConnectedError unless @connected
|
|
36
|
-
|
|
37
|
-
ping_id ||= rand(2**63)
|
|
38
|
-
body = TL::Message.ping(ping_id)
|
|
39
|
-
|
|
40
|
-
response_body = @client.rpc_call(body)
|
|
41
|
-
message = TL::Message.new(body: response_body)
|
|
42
|
-
pong = message.parse_pong
|
|
43
|
-
|
|
44
|
-
raise PingMismatchError unless pong[:ping_id] == ping_id
|
|
45
|
-
|
|
46
|
-
true
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def get_config
|
|
50
|
-
raise NotConnectedError unless @connected
|
|
51
|
-
|
|
52
|
-
response = @client.help_get_config
|
|
53
|
-
|
|
54
|
-
# Handle gzip compression
|
|
55
|
-
constructor = response[0, 4].unpack1('L<')
|
|
56
|
-
if constructor == TL::GzipPacked::CONSTRUCTOR
|
|
57
|
-
response = TL::GzipPacked.unpack(response)
|
|
58
|
-
constructor = response[0, 4].unpack1('L<')
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# Handle RPC errors
|
|
62
|
-
if constructor == TL::RpcError::CONSTRUCTOR
|
|
63
|
-
error = TL::RpcError.deserialize(response)
|
|
64
|
-
raise MTProto::RpcError.new(error.error_code, error.error_message)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# Parse and return config
|
|
68
|
-
if constructor == TL::Config::CONSTRUCTOR || constructor == TL::Config::CONSTRUCTOR_ALT
|
|
69
|
-
TL::Config.deserialize(response)
|
|
70
|
-
else
|
|
71
|
-
raise UnexpectedConstructorError.new(constructor)
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def send_code(phone_number, code_settings: {})
|
|
76
|
-
raise NotConnectedError unless @connected
|
|
77
|
-
raise ArgumentError, 'phone_number is required' if phone_number.nil? || phone_number.empty?
|
|
78
|
-
|
|
79
|
-
response = @client.auth_send_code(phone_number, code_settings: code_settings)
|
|
80
|
-
|
|
81
|
-
# Handle gzip compression
|
|
82
|
-
constructor = response[0, 4].unpack1('L<')
|
|
83
|
-
if constructor == TL::GzipPacked::CONSTRUCTOR
|
|
84
|
-
response = TL::GzipPacked.unpack(response)
|
|
85
|
-
constructor = response[0, 4].unpack1('L<')
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
# Handle RPC errors
|
|
89
|
-
if constructor == TL::RpcError::CONSTRUCTOR
|
|
90
|
-
error = TL::RpcError.deserialize(response)
|
|
91
|
-
raise MTProto::RpcError.new(error.error_code, error.error_message)
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
# Parse and return sent code
|
|
95
|
-
if constructor == TL::SentCode::CONSTRUCTOR
|
|
96
|
-
sent_code = TL::SentCode.deserialize(response)
|
|
97
|
-
sent_code.to_h
|
|
98
|
-
else
|
|
99
|
-
raise UnexpectedConstructorError.new(constructor)
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
end
|