Created Project structure (markdown)

Lonami 2017-08-31 16:08:20 +02:00
parent 0fa3cfb2e3
commit 2b222b0738

13
Project-structure.md Normal file

@ -0,0 +1,13 @@
## Main interface
The library itself is under the `telethon/` directory. The `__init__.py` file there exposes the main `TelegramClient`, a class that servers as a nice interface with the most commonly used methods on Telegram such as sending messages, retrieving the message history, handling updates, etc.
The `TelegramClient` inherits the `TelegramBareClient`. The later is basically a pruned version of the `TelegramClient`, which knows basic stuff like `.invoke()`'ing requests, downloading files, or switching between data centers. This is primary to keep the method count per class and file low and manageable.
Both clients make use of the `network/mtproto_sender.py`. The `MtProtoSender` class handles packing requests with the `salt`, `id`, `sequence`, etc., and also handles how to process responses (i.e. pong, RPC errors). This class communicates through Telegram via its `.connection` member.
The `Connection` class uses a `extensions/tcp_client`, a C#-like `TcpClient` to ease working with sockets in Python. All the `TcpClient` know is how to connect through TCP and writing/reading from the socket with optional cancel.
The `Connection` class bundles up all the connections modes and sends and receives the messages accordingly (TCP full, obfuscated, intermediate…).
## Auto-generated code
The files under `telethon_generator/` are used to generate the code that gets placed under `telethon/tl/`. The `TLGenerator` takes in a `.tl` file, and spits out the generated classes which represent, as Python classes, the request and types defined in the `.tl` file. It also constructs an index so that they can be imported easily.