Commit Graph

498 Commits

Author SHA1 Message Date
Joscha Götzer
7b5d409c49 Warn users on .add_update_handler if no workers are running (#300) 2017-10-07 17:55:37 +02:00
Lonami Exo
91a5d20e93 Replace .on_response with static .from_reader for all types 2017-10-07 13:26:09 +02:00
Lonami Exo
a17def8026 Use basename instead abspath for filename attribute (#294) 2017-10-06 21:48:53 +02:00
Lonami Exo
6d877549cb Cleanup utils.get_peer_id 2017-10-06 21:47:10 +02:00
Lonami Exo
3bf70692b4 Fix TelegramClient.get_input_entity always failing/missing return 2017-10-06 21:43:04 +02:00
Lonami Exo
79e36c98bd Fix EntityDatabase.get_input_peer not actually working 2017-10-06 21:42:04 +02:00
Lonami Exo
804a29d0bc Fix get_input_entity from peer ID not actually working 2017-10-06 21:05:02 +02:00
Lonami Exo
9d394ab18b Send MsgsAck in the same container along with the requests 2017-10-06 11:36:39 +02:00
Lonami Exo
1d8a02685f Update to v0.15.1 2017-10-05 13:58:26 +02:00
Lonami Exo
7aa21dbd07 Fix .get_dialogs to never return more than limit 2017-10-05 13:55:58 +02:00
Lonami
427a6aabaa Merge pull request #296 from LonamiWebs/entity-db
Use a custom database for entities
2017-10-05 13:46:16 +02:00
Lonami Exo
dde196d8e4 Swallow errors when processing entities
Some bug was causing an infinite lock due to the entity
database failing with InputPeerSelf, since adding a full
entity to the database wasn't disallowing self, and so
wasn't utils get_peer_id. Although last commit fixed that,
just in case, swallow errors there.
2017-10-05 13:34:44 +02:00
Lonami Exo
1fb3d0d00c Fix EntityDatabase failing to cache self user 2017-10-05 13:34:11 +02:00
Lonami Exo
4f2a44231a Allow disabling the EntityDatabase fully or partially 2017-10-05 13:06:51 +02:00
Lonami Exo
99cc0778bb Allow EntityDatabase to be accessed by phone 2017-10-05 13:01:00 +02:00
Lonami Exo
a8edacd34a Fix get_peer_id going into infinite recursion for InputPeerSelf 2017-10-05 12:59:44 +02:00
Lonami Exo
16f929b8b6 Fix .get_peer_id not working with full entities 2017-10-05 12:33:24 +02:00
Lonami Exo
10eca82143 Fix process_entities not working on list of entities 2017-10-05 12:29:52 +02:00
Lonami Exo
d2e244817a Make EntityDatabase.get a no-op if key is an entity already 2017-10-05 12:28:04 +02:00
Lonami Exo
e5c4df98df Use EntityDatabase on TelegramClient.get_entity instead lru_cache 2017-10-05 12:27:32 +02:00
Lonami Exo
a0fc5ed54e Use EntityDatabase in the Session class 2017-10-04 21:02:45 +02:00
Lonami Exo
a98dc9d95b Try passing socks.GeneralProxyError to the main thread 2017-10-04 14:09:46 +02:00
Lonami Exo
5be9df0eec Add a basic EntityDatabase class 2017-10-04 13:58:36 +02:00
Joscha Götzer
6c375a7aed Add method to .delete_messages() (#282) 2017-10-02 18:59:29 +02:00
3bl3gamer
0f019f0476 Rename last subclass_of_id to upper case (#285) 2017-10-02 13:26:55 +02:00
Lonami Exo
ba147bbe10 Fix TgClient.get_input* not calling utils.get_input* when needed 2017-10-01 21:15:49 +02:00
Lonami Exo
43f796caab Fix .get_dialogs() failing on Windows 2017-10-01 21:02:41 +02:00
Lonami Exo
d98fd6a424 Fix workers not stopping on .disconnect(), start them on login 2017-10-01 19:56:24 +02:00
Lonami Exo
62ea77cbea Fix opposite condition on .get_dialogs 2017-10-01 19:45:42 +02:00
Lonami Exo
e717256937 Always use session ip address and port when connecting 2017-10-01 19:26:20 +02:00
Lonami Exo
269949595f Allow phone as int on .sign_in (#278) 2017-10-01 19:02:53 +02:00
Lonami Exo
354ea1c0c8 Add ChannelPrivateError error 2017-10-01 18:53:12 +02:00
Lonami Exo
8c3a2470ed Update to v0.15 2017-10-01 17:38:48 +02:00
Lonami Exo
d30fdbe778 Support "string" peers on .get_input_entity 2017-10-01 16:59:18 +02:00
Lonami Exo
8df4d7c4a5 Internal methods should use .get_input_entity 2017-10-01 16:54:11 +02:00
Lonami Exo
1cdf879888 Fix .get_input_entity failing for chats 2017-10-01 16:53:47 +02:00
Lonami Exo
1ded6d9d06 Expand Updates into Update objects before calling handlers 2017-10-01 16:30:27 +02:00
Lonami Exo
c61e168de4 Rename invoke to __call__ 2017-10-01 16:04:14 +02:00
Lonami Exo
36dabc4928 Process entities from the MtProtoSender instead TelegramBareClient
This way, update objects will also be processed when they occur.
2017-10-01 16:02:29 +02:00
Lonami Exo
71b6e527a6 Allow using parenthesis or spaces in phones when .get_entity 2017-10-01 15:50:23 +02:00
Lonami Exo
5b6f9b6542 Add a new .get_input_entity method and use it on .get_entity 2017-10-01 14:19:04 +02:00
Lonami Exo
9bccd17881 Add an option to allow not saving/processing found entities 2017-10-01 13:32:27 +02:00
Lonami Exo
e4c5396c04 Add cross-thread safety when saving the session 2017-10-01 13:27:08 +02:00
Lonami Exo
a737f33324 Save all found entities to the session file 2017-10-01 13:27:08 +02:00
Lonami Exo
9445d2ba53 More enhancements on .sign_in from different clients (#278) 2017-10-01 11:37:18 +02:00
Lonami Exo
1d250a5441 Allow overriding phone on .sign_in (fix #278) 2017-10-01 11:31:26 +02:00
Lonami Exo
1d159908c7 Fix RPC excepts (e.g. UserMigrate) being in the wrong try 2017-10-01 11:25:56 +02:00
Lonami Exo
68e7d481f4 Add support to get all dialogs at once 2017-10-01 11:25:12 +02:00
Lonami Exo
a5ab49c707 Remove sleep on ServerError as per @danog's recommendation 2017-09-30 19:02:12 +02:00
Lonami Exo
33dbac6350 Add some missing BadRequest errors 2017-09-30 19:00:32 +02:00
Lonami Exo
c9dff552b8 Except ServerErrors and sleep a bit before retrying 2017-09-30 18:51:25 +02:00
Lonami Exo
76e5206acc Raise ValueError if an unknown **kwarg is given 2017-09-30 18:45:56 +02:00
Lonami Exo
f1bca0fd06 Fix setting None update workers not causing all threads to stop 2017-09-30 18:44:37 +02:00
Lonami Exo
8c3c990e74 Remove UpdateState .set and .check error 2017-09-30 18:39:31 +02:00
Lonami Exo
933ae01d85 Change condition to perform automatic reconnection 2017-09-30 18:33:34 +02:00
Lonami Exo
b6bc9ac39b Rename ._connect_lock to ._reconnect_lock 2017-09-30 18:25:09 +02:00
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