Lonami Exo
671ac1cdb7
Fix **kwargs not being passed to TelegramBareClient
2017-09-30 18:02:08 +02:00
Lonami Exo
4cd7e1711e
Rename cdn parameter to _cdn
2017-09-30 17:57:39 +02:00
Lonami Exo
d28f370ab6
Add ._get_cdn_client as alternative ._get_exported_client version
2017-09-30 17:51:07 +02:00
Lonami Exo
a35c4b15db
Cache exported Sessions instead whole clients
2017-09-30 16:32:10 +02:00
Lonami Exo
c1c6df9fd0
Fix invoke not raising ValueError when retries reach 0
2017-09-30 16:18:16 +02:00
Lonami Exo
8ecd2c2e06
Call .sync_updates on .connect iff exported_auth is None
...
Calling this method on exported clients would trigger a
UserMigrateError because it was being used on a non-native
data center. For .connects like this, don't attempt syncing
updates.
2017-09-30 16:11:16 +02:00
Lonami Exo
18e485ded2
Set default TelegramBareClient behaviour to not spawn ReadThread
2017-09-30 15:53:47 +02:00
Lonami Exo
0a567fcd7c
Make creating a new sender cleaner
2017-09-30 12:08:06 +02:00
Lonami Exo
5da300ca84
Make MtProtoSender not thread-safe
...
Rationale: a new connection should be spawned if one desires to
send and receive requests in parallel, which would otherwise cause
one of either threads to lock.
2017-09-30 11:50:11 +02:00
Lonami Exo
003e231239
Attempt at cleaning up TelegramBareClient.invoke()
2017-09-30 11:45:35 +02:00
Lonami Exo
61033b2f56
Allow disabling spawning a second thread
2017-09-30 11:28:15 +02:00
Lonami Exo
a3ae56ca9e
Use a timeout when worker threads are polling
2017-09-30 11:21:07 +02:00
Lonami Exo
7cef5885fa
Rename process_updates/polling to workers
2017-09-30 11:17:31 +02:00
Lonami Exo
72b7e99222
Ensure the worker threads have updates once they acquire the lock
2017-09-30 10:59:33 +02:00
Lonami Exo
9560bcc324
Remove "if background thread" check as it isn't exposed anymore
2017-09-30 10:27:46 +02:00
Lonami Exo
b87a798dd5
Spawn new worker threads to handle updates instead using ReadThread
2017-09-30 10:27:46 +02:00
Lonami Exo
479afddf50
Move core functionality to the TelegramBareClient
...
Rationale: the intended behaviour of the TelegramClient will now
be to focus on abstracting the users from manually importing
requests and types to work with Telegram's API. Thus, all the
core functionality has been moved to the TelegramBareClient,
which will now be responsible of spawning new threads or
connections and even handling updates.
This way there is a clear distinction between the two clients,
TelegramClient is the one meant to be exposed to the end user,
since it provides all the mentioned abstractions, while the
TelegramBareClient is the "basic" client needed to work with
the API in a comfortable way.
There is still a need for an MtProtoSender, which still even
lower level, and knows as little as possible of what requests
are. This handles parsing the messages received from the
server so that their result can be understood.
2017-09-30 10:27:46 +02:00
Lonami Exo
b61deb5cfb
Delete methods to create_new_connection and invoke_on_dc
2017-09-30 10:27:46 +02:00
Lonami Exo
0a693c705a
Create a new connection when called from a different thread
...
This allows to invoke several requests in parallel while not
waiting for other requests to be written to the network.
2017-09-30 10:27:46 +02:00
Lonami Exo
ee08232473
Fix UpdateState.check_error popping the wrong side
2017-09-30 10:27:16 +02:00
Lonami Exo
6df38da793
Fix session failing to load if no auth_key present
2017-09-29 19:54:40 +02:00
Lonami Exo
56103845de
Fix LogOutRequest consuming all retries ( #270 )
2017-09-29 13:58:15 +02:00
Lonami Exo
61e5c73658
Update to v0.14.2
2017-09-29 13:13:05 +02:00
Lonami Exo
afc4bd9cab
Rename constructor/subclass_of_id to upper case, keep only static
2017-09-29 13:11:33 +02:00
Lonami Exo
b3f04fd359
Raise AssertionError instead TypeNotFoundError on authenticator
2017-09-29 13:07:21 +02:00
Lonami Exo
3c7dd25982
Revert "if * is None" check ( 8bff10d
) on get_input_* due to 423efc4
2017-09-29 12:02:26 +02:00
Lonami Exo
dc5bbc1719
Update to v0.14.1
2017-09-28 12:02:47 +02:00
Lonami Exo
cc337328c6
Rename handmade Message class to TLMessage to avoid confusion
2017-09-28 11:59:24 +02:00
Lonami Exo
71c2a82b3d
Completely remove BinaryWriter from the project
2017-09-28 11:49:45 +02:00
Lonami Exo
2fd03e5422
Stop using BinaryWriter on MtProtoPlainSender
2017-09-28 11:43:06 +02:00
Lonami Exo
fe30f63d5d
Use autogen code on the authenticator instead hardcoding requests
2017-09-28 11:36:51 +02:00
Lonami Exo
fb0898b9cb
Don't distinguish between str and bytes when serializing
...
This makes it easier to use some requests like ReqPqRequest which
needs a string of bytes, not a valid utf-8 string per se.
2017-09-28 09:55:29 +02:00
Lonami Exo
1518be0b95
Use .appendleft(x) for deque instead .insert(0, x) ( fix #268 )
2017-09-28 09:30:47 +02:00
Lonami Exo
c667a00281
Avoid using BinaryWriter where possible
2017-09-27 21:23:59 +02:00
Lonami Exo
8a605f21e6
Remove BinaryWriter dependency on MessageContainer
2017-09-27 21:06:01 +02:00
Lonami Exo
833aeb86eb
Fix auth_key is unsigned
2017-09-27 21:04:52 +02:00
Lonami Exo
bd3dd371a2
Create a proper Message class (msg_id, seqno, body; only .to_bytes())
2017-09-27 21:01:20 +02:00
Lonami Exo
b0839a028e
Update to v0.14
2017-09-27 13:51:59 +02:00
Lonami Exo
795cb98909
Move MessageContainer.on_send inside its .to_bytes
2017-09-27 13:49:58 +02:00
Lonami Exo
6df9fc558e
Create and use a new GzipPacked class, also when sending
2017-09-27 13:46:53 +02:00
Lonami Exo
7b736aa6ef
Fix MessageContainer having the wrong constructor id
2017-09-27 13:46:02 +02:00
Lonami Exo
efca981312
Fix adding a request twice (or container) to ._pending_receive
2017-09-27 13:26:35 +02:00
Lonami Exo
0c11967232
Remove unused .shaes attribute from CdnDecrypter
2017-09-27 12:11:16 +02:00
Lonami Exo
657e8a70c9
Fix CdnDecrypter incorrectly accessing clients' timeout ( closes #265 )
2017-09-27 12:08:37 +02:00
Lonami Exo
98c2e1dd4f
Replace 4 .append calls with a single one when serializing bytes
2017-09-26 14:41:11 +02:00
Lonami Exo
b83cd98ba0
Replace TLObject.on_send with the new .to_bytes()
...
This also replaces some int.to_bytes() calls with a faster
struct.pack (up to x4 faster). This approach is also around
x3 faster than creating a BinaryWriter just to serialize a
TLObject as bytes.
2017-09-26 14:36:02 +02:00
Lonami Exo
f233110732
Allow sending several requests at once through new MessageContainer
2017-09-25 20:52:27 +02:00
Lonami Exo
1d50bba8bc
Add get_input_* methods for Media and such
2017-09-25 13:43:03 +02:00
Lonami Exo
edcd23f94c
Making timeout when reporting an error shorter
2017-09-25 12:00:09 +02:00
Lonami Exo
493f5cec1f
Fix-up target method typo
2017-09-25 11:57:42 +02:00
Lonami Exo
01c91bb895
Report errors in the background not to interfer with users ( #262 )
2017-09-25 11:56:44 +02:00
Lonami Exo
c0ee123156
Add a small sleep when trying to reconnect forever
2017-09-25 11:04:09 +02:00
Lonami Exo
0f10e1419f
Update to v0.13.6
2017-09-23 11:44:04 +02:00
Lonami Exo
b04607e7ba
Ignore requests invoked from ReadThread instead raising
...
Any unhandled exception on the ReadThread would cause it to stop,
and handling the exception to the main thread on the next invoke
or poll. Instead causing the thread to stop, simply ignore it.
2017-09-23 11:31:58 +02:00
Lonami Exo
80e9877256
Show the type of children TLObjects on .stringify()
2017-09-23 11:01:25 +02:00
Andrey Egorov
73fbfde7ef
Process messages without pts
2017-09-22 23:14:31 +02:00
Lonami Exo
f39f9c33a0
Fix timeout on confirm_received.wait not being added ( fix #257 )
2017-09-22 19:20:37 +02:00
Lonami Exo
9ce4307304
Update to v0.13.5
2017-09-22 16:12:43 +02:00
Lonami Exo
b0f6b23e52
Fix creating new connections accessing invalid attributes
2017-09-22 16:11:07 +02:00
Lonami Exo
bfa3001f87
Fix MainThread would lock when reconnecting
...
This is because it was thinking that the ReadThread would be
ready to read the result, but actually, this thread is also
locked trying to reconnect at the same time
2017-09-22 16:02:10 +02:00
Lonami Exo
9dfb5d493c
Fix BrokenPipeError was instance of OSError
2017-09-22 13:51:11 +02:00
Lonami Exo
4a8e5c865a
Detect BrokenAuthKeyError on MtProtoSender._decode_msg
2017-09-22 13:32:00 +02:00
Lonami Exo
a992f42781
Attempt at fixing socket is None on .connect()
2017-09-22 13:14:56 +02:00
Lonami Exo
6d60e83adc
Start background thread only if it was None
2017-09-22 13:13:41 +02:00
Lonami Exo
d8bf8bb2eb
Fix reconnect always returning False -> infinite loop
2017-09-22 12:48:04 +02:00
Lonami Exo
4d5f16f2aa
Fix background thread could not reconnect properly
2017-09-22 12:44:09 +02:00
Lonami Exo
4245ec5abc
Make reconnect private
2017-09-22 12:31:41 +02:00
Lonami Exo
bc15b451b5
Use a safer reconnect behaviour (respect multithread too)
2017-09-22 12:20:38 +02:00
Lonami Exo
ffadcd029f
Save the session much less often (doable because 151e162
)
2017-09-21 19:12:46 +02:00
Lonami Exo
12c6d4d3ac
Start the background thread only if the user is authorized
2017-09-21 15:36:20 +02:00
Lonami Exo
4ba12e717f
Fix reconnect to new_dc wasn't changing connection.ip
2017-09-21 13:58:57 +02:00
Lonami Exo
7f83a6109f
Fix authenticator was disconnecting when it shouldn't
2017-09-21 13:54:44 +02:00
Lonami Exo
2b2da843a1
Create a Connection only once and avoid no-op if was "connected"
2017-09-21 13:44:22 +02:00
Lonami Exo
4777b8dad4
Handle .connect() method more gracefully
2017-09-21 13:44:22 +02:00
Sergey
446174c7de
Catching WinError 10038
...
While client.connect() there were OSError: [WinError 10038] an operation was attempted on something that is not a socket
2017-09-21 13:37:13 +02:00
Lonami Exo
c22224f516
Attempt at handling ProxyConnectionError on .connect()
2017-09-20 13:23:52 +02:00
Lonami Exo
b8d7b1c8af
Phone number shouldn't actually start with '+'
2017-09-20 13:23:52 +02:00
jiang gau
9ae4f7f641
Fix wrong check on .send_message ( closes #250 )
2017-09-19 16:27:10 +02:00
Lonami Exo
1d3273a306
Fix UpdateState calling handlers with updates with lower pts
2017-09-19 13:17:40 +02:00
Lonami Exo
e12e82357d
Update to v0.13.4
2017-09-18 13:32:16 +02:00
Lonami Exo
91f44613a8
Fix SendMessageRequest could return UpdateShortSentMessage
2017-09-18 11:59:55 +02:00
Lonami Exo
200d1d67be
Make BufferError message more useful
2017-09-18 11:45:08 +02:00
Lonami Exo
0235fce99c
Don't hold ._updates_lock while calling .handlers
2017-09-18 11:01:15 +02:00
Lonami Exo
143e046cf5
Attempt at passing errors to the main thread through .updates
2017-09-18 10:59:54 +02:00
Lonami Exo
e3ab98815d
Fix reconnect on TypeNotFoundError failing
2017-09-18 10:21:53 +02:00
Lonami Exo
e0e3947d2f
Fix some misleading errors/documentation
2017-09-18 09:37:20 +02:00
Lonami Exo
2a3e5e5ed2
Handle BufferError's more gracefully
2017-09-17 19:39:41 +02:00
Lonami Exo
78155a21bd
Retry authentication for auth keys up to five times by default
2017-09-17 19:15:43 +02:00
Lonami Exo
e7a936222f
Catch -404 BrokenAuthKeyError on .connect()'s .do_authentication
2017-09-17 18:38:03 +02:00
Lonami Exo
940dfe6816
Fix process_updates=True preventing new sessions from signing in
2017-09-17 18:13:58 +02:00
Lonami Exo
58fe39f060
Expose MtProtoSender.is_connected() and use it on .connect()
2017-09-17 16:39:29 +02:00
Lonami Exo
05a8723d36
Catch calling .receive() when .sender is None on recv_thread
2017-09-17 16:37:08 +02:00
Lonami Exo
12c12fdfaf
Fix representing .stringify() for bytes with indent > 0
2017-09-17 16:35:35 +02:00
Lonami Exo
76b7420b63
Ignore TimeoutError when invoking a request
2017-09-17 16:32:51 +02:00
Lonami Exo
2f0f6d4591
Remove initial_query leftovers
2017-09-17 16:20:04 +02:00
Lonami Exo
aea10b103b
Rename generated layer variable to uppercase readonly property
2017-09-17 16:17:55 +02:00
Lonami Exo
c84e54b647
Get rid of the initial_query= parameter on .connect()
2017-09-17 16:06:43 +02:00
Lonami Exo
2689b0750d
Make DC options static
...
Some datacenters don't allow calling GetConfigRequest,
this way it can both be reused and such calls omitted.
2017-09-17 15:19:21 +02:00
Lonami Exo
59a4315c28
Avoid calling InitConnectionRequest when it's not needed
2017-09-17 14:26:25 +02:00
Lonami Exo
29471f3bba
Force obfuscated2 mode if api_id < 20
2017-09-15 11:49:39 +02:00
Lonami Exo
279eb110be
Update to v0.13.3
2017-09-14 11:51:41 +02:00
Lonami Exo
12a39873f1
Workaround msg_seqno too low/high ( closes #95 )
2017-09-14 11:50:38 +02:00
Lonami Exo
151e1623d3
Stop saving the session ID, sequence and time offset
...
After some discussion, storing the session ID is not needed at all.
It can always start off as a new random 8-byte-long number, also
restarting the sequence number at 0. This should prevent some seqno
too low errors.
Also, saving the time offset could cause more trouble than fixing
them, so that has also been removed.
2017-09-14 11:44:42 +02:00
Lonami Exo
73fe7258d1
Modify .send_message to return the sent message object
2017-09-13 12:00:27 +02:00
Lonami Exo
d12fb5b924
Add an optional reply_to parameter to .send_message/media
2017-09-13 11:51:23 +02:00
Lonami Exo
7043f4c9ba
Add a convenience method to send voice notes
2017-09-13 11:30:20 +02:00
Lonami Exo
d79dccc923
Add a lock around TcpClient.close() to try avoiding None.close()
2017-09-13 09:44:58 +02:00
Lonami Exo
1d36bbfbf4
Remove forgotten invalid code CdnDecrypter.finish_check ( fix #243 )
2017-09-12 15:38:00 +02:00
Lonami Exo
a76c31ede2
Add lru_cache decorator to .get_entity()
2017-09-11 12:53:39 +02:00
Lonami Exo
83f9cafabf
Make .get_entity() public
2017-09-11 11:54:32 +02:00
Lonami Exo
188b1c8816
Fix client reconnection not actually working
2017-09-11 11:38:36 +02:00
Lonami Exo
a2fdd4b196
Ignore InvalidChecksumError's
2017-09-11 11:04:19 +02:00
Lonami Exo
48dead76ac
Retry up to five times before giving up on a request
2017-09-11 10:52:36 +02:00
Lonami Exo
bce88446ef
Fix incorrect condition causing updates to be ignored
2017-09-08 18:43:37 +02:00
Lonami Exo
54ba0661c6
Fix wrong variable name causing .connect() to fail
2017-09-08 18:28:31 +02:00
Lonami Exo
fa4042a80e
Update to v0.13.2
2017-09-08 13:22:05 +02:00
Lonami Exo
c81537bed0
Simplify the workflow with UpdateState exposing a single flag param
2017-09-08 12:54:38 +02:00
Lonami Exo
25bbb20b0c
Use RLocks properly on MtProtoSender (only needed on net IO)
2017-09-07 21:32:46 +02:00
Lonami Exo
16a5ab3070
Add back the periodic PingRequest
2017-09-07 21:23:37 +02:00
Lonami Exo
a24b4020fe
Allow adding update handlers without the need to poll updates
2017-09-07 20:29:51 +02:00
Lonami Exo
b8e881b6b6
Add basic updates processing to ignore updates with lower .pts
2017-09-07 20:17:40 +02:00
Lonami Exo
d237375208
Allow adding callback methods to UpdateState
2017-09-07 18:58:54 +02:00
Lonami Exo
d4f36162cd
Create and use UpdateState to .process() unhandled TLObjects
2017-09-07 18:49:08 +02:00
Lonami Exo
49e884b005
Raise AssertionError if trying to invoke requests from ReadThread
2017-09-07 18:48:41 +02:00
Lonami Exo
06b2834c02
Fix GetContactsRequest using str instead int (layer 70->71) ( #234 )
2017-09-07 10:45:55 +02:00
Birger Jarl
edf325d580
Fix username regex ( #235 )
...
Username max length is 1+31 = 32
2017-09-07 09:41:49 +02:00
xkdnyan
cd40f4a949
Add RPCError for MESSAGE_NOT_MODIFIED ( #231 )
2017-09-05 17:06:35 +02:00
Lonami Exo
49555ad018
Stick to the offset and limit CdnFileHashes dictates ( #222 )
...
The old intersection method and allowing an arbitrary part size
wasn't working properly. Assuming that Telegram will send a sha
sum for the whole file, in the correct order, we can simply use
their offsets to download the file.
2017-09-05 16:43:53 +02:00
Lonami Exo
2924912931
Fix CDN downloads not always calling GetCdnConfigRequest ( #222 )
...
On previous tests, Telegram didn't return information about CDNs
on the initial GetConfigRequest. However, it may do so, and it's
necessary to call GetCdnConfigRequest even when a second call to
GetConfigRequest isn't required.
2017-09-05 16:11:02 +02:00
Lonami Exo
d5cd59de8a
Update to v0.13.1
2017-09-04 20:34:05 +02:00
Lonami Exo
a38381665c
Support invoking requests from within the ReadThread ( fixes #226 )
2017-09-04 20:28:41 +02:00
Lonami Exo
fe86b88bef
Make .sign_up() return the logged user just like .sign_in()
2017-09-04 18:07:20 +02:00
Lonami Exo
15fd5390ae
Optimize imports
2017-09-04 17:18:33 +02:00
Lonami Exo
97cab7347b
Make lint happier
2017-09-04 17:10:04 +02:00
Lonami Exo
7f700c3bc1
Remove unused attributes and methods from the base TLObject class
2017-09-04 16:39:16 +02:00
Lonami Exo
dc238df2e0
Update to v0.13
2017-09-04 12:18:45 +02:00
Lonami Exo
6f0bd14c2f
Use an Enum for the ConnectionMode and support specifying it
2017-09-04 11:24:10 +02:00
Lonami Exo
62a52679f4
Ensure the state of the requests is clean before invoking them
2017-09-03 13:45:13 +02:00
Lonami Exo
27408b46da
Only reconnect from background thread if .disconnect wasn't called
2017-09-03 13:44:52 +02:00
Lonami Exo
626778bd32
Ignore EBADF when closing the socket
2017-09-03 13:44:29 +02:00
Lonami Exo
68cdc9eaf1
Treat OSError.errno == EBADF as a ConnectionResetError
2017-09-03 11:54:26 +02:00
Lonami Exo
f8f389c850
Fix ack requests removing pending requests when they shouldn't
2017-09-03 11:21:42 +02:00
Lonami Exo
db6fd4bdc2
Fix RPC errors being ignored due to modifying the wrong attribute
2017-09-03 11:19:28 +02:00
Lonami Exo
83f3f66113
Fix MtProtoSender never clearing self._pending_receive requests
2017-09-03 10:50:55 +02:00
Lonami Exo
fa34c4bb77
Handle ConnectionResetError on background thread (removed on 9bc1f64
)
2017-09-03 10:05:18 +02:00
Lonami Exo
2a5d08b23d
Turn socket.timeout error into the more general TimeoutError
2017-09-03 10:01:00 +02:00
Lonami Exo
494b82ea9d
Fix check to avoid (dis)connecting if already (dis)connected
2017-09-03 09:59:37 +02:00
Lonami Exo
4de4026bb3
Move the "constant read" thread to the main TelegramClient
2017-09-03 09:56:10 +02:00
Lonami Exo
9bc1f64efe
Move update handling to the MtProtoSender, being functional again
2017-09-02 21:46:44 +02:00
Lonami Exo
21eaf8bd72
Allow setting whether the MtProtoSender should use constant_read
2017-09-02 21:27:11 +02:00
Lonami Exo
863d2e8368
Make confirm_received a flag, avoid race conditions, fix bg RPCError
...
There was a race condition between TelegramBareClient.invoke
receiving part and MtProtoSender._handle_rpc_result actually
reading the result after setting request.confirmed = True.
The .confirmed is now a threading.Event to avoid the sleep(0.1).
RPC errors have been moved inside the request so they're not
raised on a background thread anymore.
2017-09-02 20:41:00 +02:00
Lonami Exo
b908296efa
Remove unused TcpClien.read(timeout=...) param, change other accessors
2017-09-02 19:33:42 +02:00
Lonami Exo
36f51e1e3f
Remove ability to TcpClient.cancel_read()
...
This simplifies the process of sending and receiving data,
and makes use of Python's socket.settimeout instead a hand-crafted
version with a sort-of arbitrary self.delay = 0.1 (seconds), which
should improve the speed of the method
2017-09-02 19:14:11 +02:00
Lonami Exo
cc280a129d
Remove TcpClient.write/read shared locks
...
Since they were shared between write and read, and now the read
is done constantly on a separate thread, the read lock would
cause the write method to be locked and not functional at all
2017-09-02 18:49:29 +02:00
Lonami Exo
43b79c3d36
Add a thread to constantly read messages from the network
2017-09-02 18:27:22 +02:00
Lonami Exo
0197271f74
Fix SignUpRequest using an incorrectly named parameter
2017-09-02 16:52:56 +02:00
Lonami Exo
bea1b7f526
Preserve backward compatibility with old .sign_in() code
2017-08-31 10:38:53 +02:00
Lonami
5f636fdf31
Let .sign_in() call .send_code_request()
2017-08-31 10:34:09 +02:00
Lonami Exo
8bff10d956
Fix get_input_* not skipping None entities ( #215 )
...
This was an issue when parsing optional parameters, since None
could not be specified, resulting in a strange crash.
2017-08-30 11:12:25 +02:00
Lonami Exo
b4811261e9
Set a known buffer size if possible on BinaryWriter()s
2017-08-29 20:44:51 +02:00
Lonami Exo
7ad2ece168
Simplify modifying TelegramClient.session through its __init__
2017-08-29 16:06:14 +02:00
Lonami Exo
22673aec0e
Replace the old Session+pickle with JsonSession (name change)
2017-08-29 15:59:08 +02:00
Lonami Exo
82304b18eb
Attempt at supporting IPv6 ( #211 and #112 )
2017-08-29 13:49:41 +02:00
Lonami Exo
592e107f52
Recreate the TCP socket only when needed
2017-08-29 13:35:56 +02:00
Lonami Exo
cff7655a10
Add support for TCP intermediate mode ( #112 )
2017-08-29 11:39:44 +02:00
Lonami Exo
a3c2c462a7
Add support for tcp_obfuscated on the Connection class ( #112 )
2017-08-28 21:44:02 +02:00
Lonami Exo
fa22a3f848
Create a centralized Connection class, replaces TcpTransport ( #112 )
2017-08-28 21:23:31 +02:00
Lonami Exo
bc72e52834
Reuse the AESModeCTR class on CdnDecrypter
2017-08-28 20:30:33 +02:00
Lonami Exo
5404670469
Implement and use TCP obfuscated as a PoC ( #112 )
...
Credits to MadelineProto/Connection.php by @danog
2017-08-28 20:25:44 +02:00
Lonami Exo
adfebfc82c
Remove ThreadTcpClient test (committed by mistake)
2017-08-28 17:46:31 +02:00
Lonami Exo
2c6377e069
Update to v0.12.2
2017-08-28 17:29:08 +02:00
Lonami Exo
06b2d5d786
Fix CDN client not being disconnected
2017-08-28 16:33:23 +02:00
Lonami Exo
8afcd0b91f
Turn HashChecker into CdnDecrypter to abstract CDN-specific aspects
2017-08-28 16:25:10 +02:00
Lonami Exo
b504ce14bc
Verify the files downloaded from CDNs and raise on sha256 mismatch
2017-08-28 14:17:31 +02:00
Lonami Exo
00b5b5021b
Report errors to pwrtelegram.xyz by default
2017-08-25 15:34:20 +02:00
Lonami Exo
2517b9787d
TLObject.stringify() was showing bytes as lists
2017-08-24 20:56:08 +02:00
Lonami Exo
2e55998d7f
Update to v0.12.1
2017-08-24 19:09:37 +02:00
Lonami Exo
98bbcb6cd6
Favour rsa module over PyCrypto since the former is pure Python
2017-08-24 18:41:48 +02:00
Lonami Exo
b7dbf9767e
Fix TelegramClient.sign_in not accepting an integer for the code
2017-08-24 18:05:32 +02:00
Lonami Exo
4384ccb132
Tidy up TelegramBareClient.download_file CDN's mess
2017-08-24 18:00:47 +02:00
Lonami Exo
d5323c5506
Enhance a lot choosing a valid path when downloading files
2017-08-24 17:44:38 +02:00
Lonami Exo
e5e7715a31
Decrypt files downloaded from CDNs ( closes #208 )
2017-08-24 15:50:44 +02:00
Lonami Exo
940a2896e8
Part size when downloading files is now 4096 bytes, not 1024
2017-08-24 13:15:33 +02:00
Lonami Exo
09272ef6fc
Support connecting and downloading encrypted files from CDNs ( #208 )
2017-08-24 13:02:48 +02:00
Lonami Exo
d5fd147881
Add a few more default RSA public keys from Telegram
2017-08-23 21:50:33 +02:00
Lonami Exo
66876b6722
Use pycrypto's RSA instead the old weird RSA implementation
2017-08-23 21:49:27 +02:00
Lonami Exo
0cae62f091
Fix silly bug with two wrongly ordered lines (on download document)
2017-08-23 16:06:41 +02:00
Lonami Exo
571d8bc21f
Update to v0.12
2017-08-23 01:47:52 +02:00
Lonami Exo
c0bae1d608
Replace type(...) == ... with isinstance() checks
2017-08-23 01:45:49 +02:00
Lonami Exo
65d5ab685f
Let .upload_file() support streams and byte arrays
2017-08-23 01:43:08 +02:00
Lonami Exo
8ed77418bf
Make .download_profile_photo() more friendly
2017-08-23 01:35:12 +02:00
Lonami Exo
1d0ad9628d
Rename "callback" to "progress_callback" for consistency
2017-08-23 00:55:34 +02:00
Lonami Exo
fd6a9a4318
Make downloading files a lot more friendly with .download_media()
2017-08-23 00:48:00 +02:00
Lonami Exo
4234efcc86
Make sending files a lot more friendly with a simple .send_file()
2017-08-23 00:27:33 +02:00
Lonami Exo
81ccd21cdb
Allow specifying a phone number or username for common methods
2017-08-23 00:01:10 +02:00
Lonami Exo
fb5c43b539
Ensure .connect() always returns True/False
2017-08-22 23:17:05 +02:00
Lonami Exo
1a6231472e
Ensure the connection is flagged as closed on errors, move #201
2017-08-22 23:12:32 +02:00
Lonami Exo
88ec9c297e
Improve libssl.py's file formatting
2017-08-22 23:05:07 +02:00
Lonami Exo
274e16ac66
Avoid defining Python's AES class if libssl's is available
2017-08-22 23:05:07 +02:00
Tural
12b84c929a
Fix log_out problems on macOS devices
2017-08-21 09:00:23 +02:00
Christian Stemmle
ffb1cf483d
Faster crypto by using libssl ( closes #199 )
2017-08-20 01:21:11 +02:00
Lonami Exo
afcddfd7c1
Remove seemingly useless array copies on aes.py ( #199 )
2017-08-17 18:12:19 +02:00
Lonami Exo
9f812d83a9
Use sympy for faster factorization if available ( #199 )
2017-08-17 17:37:27 +02:00
Lonami Exo
7e85a3cda4
Attempt at making get_new_msg_id thread-safe ( #195 )
2017-08-14 15:17:16 +02:00
MeytiGHG
1794acdfec
Check for isinstance(x, JsonSession) instead crashing during transition
2017-08-07 00:54:23 +02:00
Lonami Exo
83c346ccc5
Let InputPeerChannel be casted automatically into InputChannel
2017-08-05 09:37:34 +02:00
Lonami Exo
7844cd358e
Attempt at making layer migrations more smooth ( #158 )
2017-07-26 16:10:45 +02:00
Lonami Exo
160a3699ac
Fix confusing names "MtProtoRequest" and ".confirmed" ( #176 )
...
This also fixes the annoyingly confusing message:
"Odd msg_seqno expected (relevant message), but even received."
2017-07-24 16:54:48 +02:00
Lonami Exo
773376ee21
Fix two more spelling mistakes
2017-07-23 18:38:27 +02:00
Lonami Exo
fe2e9f335b
Style enhancements for PR #173
2017-07-23 17:08:04 +02:00
hnikaein
c9e566342e
All download_* methods now accept streams
2017-07-20 09:37:19 +02:00
Lonami Exo
3be995b5a3
Update to v0.11.5
2017-07-11 11:38:17 +02:00
Lonami Exo
5ded836437
Update to v0.11.4
2017-07-10 16:13:45 +02:00
Lonami Exo
88c4cdfb52
Make get_input_* methods slightly smarter
2017-07-10 16:11:06 +02:00
Lonami Exo
bdee94eaf3
Implement automatic cast to InputUser too ( closes #159 )
2017-07-10 16:04:10 +02:00
Lonami Exo
1f7ac71187
Debug level should always be used for logging since it's a library
2017-07-10 15:21:20 +02:00
Lonami Exo
0119a00658
Rename no_webpage to link_preview for clarity
2017-07-07 10:37:19 +02:00
Lonami Exo
95a989be2c
Automatically cast Channel to InputChannel (similar to InputPeer)
2017-07-07 09:48:06 +02:00
Lonami Exo
f88efa7f49
Let PeerChat be casted to InputPeerChat automatically
2017-07-04 21:18:35 +02:00
Lonami Exo
8fd0d7eadd
Add a new .stringify() function to visualize TLObjects more easily
2017-07-04 21:15:47 +02:00
Lonami Exo
632fcb7c00
Ensure device model is non-empty ( closes #154 )
2017-07-04 19:47:55 +02:00
Lonami Exo
9bb6353fa3
Fix send_message using the incorrect type to return the msg_id ( #156 )
2017-07-04 16:53:07 +02:00
Lonami Exo
127e5f70d8
Update to v0.11.2
2017-07-04 10:39:57 +02:00
Lonami Exo
1f3aec589b
Let TelegramBareClient handle FileMigrateErrors instead ( closes #148 )
2017-07-04 10:21:15 +02:00
Lonami Exo
15673d9f77
Let __call__ = invoke, and encourage this new way to invoke requests
2017-07-02 11:56:40 +02:00
Lonami Exo
23e2802215
Update to layer 68
2017-06-30 11:48:45 +02:00
Lonami Exo
83c8e98448
Ensure that message ids are signed once again
2017-06-27 18:45:52 +02:00
Lonami Exo
0cfbf63eaf
Fix ConnectionResetError not flagging the socket as disconnected
2017-06-27 10:18:35 +02:00
Lonami Exo
b0173c3ec2
Use more accurate values for msg_ids
2017-06-26 11:01:20 +02:00
Lonami Exo
a5ce375358
Update to v0.11.1 and fix setup.py
2017-06-24 18:16:10 +02:00
Lonami Exo
459e988ff5
Rename rpc_n_errors dictionary to rpc_errors_n_all
2017-06-24 18:10:05 +02:00
Lonami Exo
20956b23d1
Replace super calls with simply super()
2017-06-23 10:15:11 +02:00
Lonami Exo
843c16215c
Add timeout parameter on TcpClient.connect() too
2017-06-22 19:21:33 +02:00
Lonami Exo
e4fbd87c75
Turn timeout into a property instead leaving it as a parameter
2017-06-22 11:43:42 +02:00
Lonami Exo
52a42661ee
Add timeout to connect()
2017-06-22 10:39:00 +02:00
Lonami Exo
a9a5c7e254
Use signed longs for every request_id ( #138 follow-up)
2017-06-21 10:21:09 +02:00
Lonami Exo
d58222d007
Use crc32 from zlib instead from binascii
...
It seems to be a bit faster stackoverflow.com/q/44502855
2017-06-20 11:03:46 +02:00
Lonami Exo
86358d7805
Add periodic pings if an updates thread was started (closes #138 )
2017-06-20 09:46:37 +02:00
Lonami Exo
697434be37
Don't do anything on .connect() if it's already connected
2017-06-20 09:46:37 +02:00
Lonami
daa626aa04
Merge pull request #136 from cher-nov/pr20170619_session
...
Fix bugs related to temporary sessions
2017-06-18 23:49:36 +02:00
Dmitry D. Chernov
8d9e50989b
Fix temporary Session fields not being defined
2017-06-19 07:41:47 +10:00
Dmitry D. Chernov
2af962230f
Fix error 400:CONNECTION_APP_VERSION_EMPTY when using temporary sessions
2017-06-19 07:40:35 +10:00
Hasan
c13164f5cf
Use the correct amount of random bytes in DH request
...
The official documentation says a 2048 *bit* number.
`os.urandom` takes an argument that represents the number of *bytes*.
2048 bits is 256 bytes
2017-06-18 23:38:14 +02:00
Lonami Exo
8afb0a3f6b
Rename Request.msg_id to request_msg_id to avoid name clash ( fix #122 )
2017-06-18 10:01:59 +02:00
Lonami Exo
765ae870cf
Fix connection parameters not being copied on reconnection ( #129 )
2017-06-17 22:05:34 +02:00
Lonami
be33ae4e80
Fix rpc_message_to_error failing to construct them
2017-06-17 08:25:48 +02:00
Lonami Exo
2b85463ce6
Don't ignore more possible updates on .receive_updates() ( closes #117 )
2017-06-16 15:36:47 +02:00
Goblenus
c304ee903f
Trigger reconnection on BrokenPipeError and InvalidChecksumError
2017-06-16 14:59:10 +02:00
Lonami Exo
92b4125b2b
Update to v0.11
2017-06-16 10:11:03 +02:00
Lonami Exo
e7b0c06ca5
Make .get_input_user faster when the right type is given
2017-06-16 10:01:05 +02:00
feodoran
13199f737e
Handle more cases on .get_display_name
2017-06-16 09:11:49 +02:00
Lonami Exo
86d45cc276
Improve .get_input_peer and use it only when creating requests*
...
This avoids cyclic dependencies, so types requiring an InputPeer
as a parameter will NOT convert faulty types to the right ones.
2017-06-15 17:03:59 +02:00
Lonami Exo
c02fbae5aa
Allow creating a new parallel connection ( closes #102 )
2017-06-15 15:50:44 +02:00
Lonami Exo
3fccfd40e6
Show error messages on non-specialized error classes ( closes #113 )
2017-06-15 15:25:05 +02:00
Lonami Exo
92088383f7
Fix get_message_history not returning sender on channels ( closes #110 )
2017-06-15 09:41:39 +02:00
Lonami Exo
fc915b2284
Fix get_message_history ignoring chats and enhance find_user_or_chat
2017-06-14 14:06:35 +02:00
Lonami Exo
96d8ca94cf
Move TelegramClient.list_sessions to *Session.list_session
2017-06-14 13:57:30 +02:00
Lonami Exo
d8afb7e548
Also except BlockingIOError on TcpClient.send()
2017-06-12 10:44:04 +02:00
Goblenus
f083b88f59
(Fix) Fix api_id type mismatch
2017-06-12 09:34:53 +02:00
Lonami Exo
1ca41b5854
Automatically infer the value for 'random_id' parameters
2017-06-11 19:16:59 +02:00
Lonami Exo
3ed59d08e5
Fix commit 65912f9
by properly skipping lost messages
2017-06-11 17:53:53 +02:00
Lonami Exo
65912f926b
Allow to send more than one request before receiving them ( #105 )
2017-06-11 14:58:16 +02:00
Lonami Exo
c6acd6adc5
Use only ASCII characters on the code ( closes #104 )
2017-06-10 13:39:37 +02:00
Lonami Exo
5c138977c3
Do not cancel UpdatesThread .receive() on reconnection
2017-06-10 13:16:37 +02:00
Lonami Exo
a73be04da7
Move connection parameters to the session
2017-06-10 13:15:04 +02:00
Lonami Exo
1119a2737a
Remove markdown "parser" since that's not Telethon-specific
2017-06-10 13:00:39 +02:00
Lonami Exo
44ab85962b
Completely change errors (make one class for each)
2017-06-10 11:47:51 +02:00
Lonami Exo
5df4716164
Add errors related to #103
2017-06-10 10:08:08 +02:00
Lonami Exo
7adb4f09d6
Slightly reorganise the project structure
2017-06-09 16:13:39 +02:00
Lonami Exo
ba5bfa105f
Use memoryview() on TcpClient.write() instead slicing the data
2017-06-09 11:50:30 +02:00
Lonami Exo
c6645a555d
Prefer BufferedWriter over BinaryWriter for socket operations
2017-06-09 11:42:39 +02:00
Lonami Exo
5494cb15eb
"Don't go nuts switching back and forth between (non-)blocking"
...
And other improvements (shutting down the socket, proper naming).
https://docs.python.org/3/howto/sockets.html#non-blocking-sockets
2017-06-09 11:27:52 +02:00
Lonami Exo
40616ba704
Support arbitrary file objects for .download_file() and update README
2017-06-09 11:12:56 +02:00
Lonami Exo
40f4c2533a
Incredibly improve downloading media on different DCs*
...
* This involves raising the InvalidDCError on .invoke()
when the message is FILE_MIGRATE_X, but users can always
catch this error and use the .invoke_on_dc() function
2017-06-09 10:50:40 +02:00
Lonami Exo
efd1c1ba64
Always acknowledge received errors for server not to resend them
2017-06-09 10:46:39 +02:00
Lonami Exo
639a17aa5a
Cache exported TelegramBareClients instead MtProtoSenders
2017-06-09 10:35:19 +02:00
Lonami Exo
cf65e5b1cf
Get rid of signature warnings and use nicer *args instead
2017-06-08 19:03:15 +02:00
Lonami Exo
b760f0de50
Fix reconnection (InvalidDC did not occur on .connect())*
...
* Also, use the parameters given for the initial connection
instead ignoring them.
2017-06-08 16:51:20 +02:00
Lonami Exo
6a043b7371
Fix Session not being able to save auth_key=None
2017-06-08 16:45:09 +02:00
Lonami Exo
d788d30de2
Move connect() parameters to init and ignore signature warnings
2017-06-08 16:41:20 +02:00
Lonami Exo
a07c7bd0d0
Move InteractiveClient to examples/ (and stop shipping it to pip)
2017-06-08 14:06:32 +02:00
Lonami Exo
88f87f6de2
Major TelegramClient rewrite, split it into TelegramBareClient*
...
Making a distinction between a bare client and a full-featured
client will make it easier to create instances of the bare
client itself that can be simultaneously and hence have two
separate connections which do not interfer with eachother.
While writing the bare client, full reconnection to a
different data center is once again done only on .connect().
2017-06-08 13:12:57 +02:00
Lonami Exo
6922eb3d39
Update to v0.10.1
2017-06-07 20:15:27 +02:00
Lonami Exo
4a2b6e7fa8
Don't start another thread unless an update handler is added*
...
*Also, stop sending pings, automatic reconnection from
commit fb4885a
does the job better.
2017-06-07 20:10:57 +02:00
Lonami Exo
1860054ec0
Make generate_sequence() thread-safe and move it to Session
2017-06-07 12:00:01 +01:00
Lonami Exo
49ca5c00c7
Create a more upgrade-resistant JSON-based Session class
2017-06-07 11:48:54 +01:00
Lonami Exo
8e3f3063f4
Add more errors and make them more descriptive
2017-06-07 11:09:10 +01:00
Lonami Exo
5c7efdb04f
Make use of relative imports everywhere, again
2017-06-05 18:00:43 +02:00
Dmitry D. Chernov
5362f2578d
Allow using lists and dicts for passing proxy settings
2017-06-05 09:26:10 +02:00
Lonami Exo
cf6f300df1
Improve .is_user_authorized() and add a .get_me() method
2017-06-04 17:24:08 +02:00
Lonami Exo
7acfd0c6c9
Update to v0.10 and some minor grammar fixes
2017-06-03 13:36:41 +02:00
Lonami Exo
b472421b8a
Allow specifying custom version/lang code/etc on client.connect
2017-06-03 13:24:27 +02:00
Lonami Exo
153cbfd350
Use more straightforward calls of hashlib.sha1/sha256
2017-06-02 16:49:03 +02:00
Lonami Exo
6b4f2abb96
Fix disconnect and reconnect for exported senders ( #53 )
2017-05-30 13:27:23 +02:00
Lonami Exo
097d1669b2
Allow invoking requests on different DCs ( #53 )
2017-05-30 13:03:14 +02:00
Lonami Exo
a427465231
Tidy up working with different DCs
2017-05-30 12:14:29 +02:00
Lonami Exo
d321096714
Tidy if/else branch on _recreate_socket
2017-05-30 11:42:14 +02:00
Lonami Exo
2399b7e55e
Remove try/except if a proxy was used, make more members private
2017-05-30 10:40:33 +02:00
Lonami Exo
0b9d76bda1
Replace library print()'s with calls to _logger
2017-05-30 10:24:08 +02:00
Lonami Exo
fb4885aed0
Trigger automatic reconnection if server kicks us ( #94 )
2017-05-30 10:11:18 +02:00