mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-03-03 10:45:52 +03:00
Process entities and add a handler for updates
This commit is contained in:
parent
c7e4ae8672
commit
a940e2e9a2
|
@ -3,7 +3,7 @@ import logging
|
||||||
|
|
||||||
from .connection import ConnectionTcpFull
|
from .connection import ConnectionTcpFull
|
||||||
from .. import helpers, utils
|
from .. import helpers, utils
|
||||||
from ..errors import BadMessageError, rpc_message_to_error
|
from ..errors import BadMessageError, TypeNotFoundError, rpc_message_to_error
|
||||||
from ..extensions import BinaryReader
|
from ..extensions import BinaryReader
|
||||||
from ..tl import TLMessage, MessageContainer, GzipPacked
|
from ..tl import TLMessage, MessageContainer, GzipPacked
|
||||||
from ..tl.functions.auth import LogOutRequest
|
from ..tl.functions.auth import LogOutRequest
|
||||||
|
@ -231,11 +231,8 @@ class MTProtoSender:
|
||||||
self._pending_ack.add(msg_id)
|
self._pending_ack.add(msg_id)
|
||||||
code = reader.read_int(signed=False)
|
code = reader.read_int(signed=False)
|
||||||
reader.seek(-4)
|
reader.seek(-4)
|
||||||
handler = self._handlers.get(code)
|
handler = self._handlers.get(code, self._handle_update)
|
||||||
if handler:
|
await handler(msg_id, seq, reader)
|
||||||
await handler(msg_id, seq, reader)
|
|
||||||
else:
|
|
||||||
pass # TODO Process updates and their entities
|
|
||||||
|
|
||||||
async def _handle_rpc_result(self, msg_id, seq, reader):
|
async def _handle_rpc_result(self, msg_id, seq, reader):
|
||||||
"""
|
"""
|
||||||
|
@ -277,12 +274,20 @@ class MTProtoSender:
|
||||||
else:
|
else:
|
||||||
result = message.request.read_result(reader)
|
result = message.request.read_result(reader)
|
||||||
|
|
||||||
# TODO Process possible entities
|
self.session.process_entities(result)
|
||||||
if not message.future.cancelled():
|
if not message.future.cancelled():
|
||||||
message.future.set_result(result)
|
message.future.set_result(result)
|
||||||
return
|
return
|
||||||
|
else:
|
||||||
# TODO Try reading an object
|
# TODO We should not get responses to things we never sent
|
||||||
|
try:
|
||||||
|
if inner_code == GzipPacked.CONSTRUCTOR_ID:
|
||||||
|
with BinaryReader(GzipPacked.read(reader)) as creader:
|
||||||
|
obj = creader.tgread_object()
|
||||||
|
else:
|
||||||
|
obj = reader.tgread_object()
|
||||||
|
except TypeNotFoundError:
|
||||||
|
pass
|
||||||
|
|
||||||
async def _handle_container(self, msg_id, seq, reader):
|
async def _handle_container(self, msg_id, seq, reader):
|
||||||
"""
|
"""
|
||||||
|
@ -304,6 +309,15 @@ class MTProtoSender:
|
||||||
with BinaryReader(GzipPacked.read(reader)) as compressed_reader:
|
with BinaryReader(GzipPacked.read(reader)) as compressed_reader:
|
||||||
await self._process_message(msg_id, seq, compressed_reader)
|
await self._process_message(msg_id, seq, compressed_reader)
|
||||||
|
|
||||||
|
async def _handle_update(self, msg_id, seq, reader):
|
||||||
|
try:
|
||||||
|
obj = reader.tgread_object()
|
||||||
|
except TypeNotFoundError:
|
||||||
|
return
|
||||||
|
|
||||||
|
# TODO Further handling of the update
|
||||||
|
self.session.process_entities(obj)
|
||||||
|
|
||||||
async def _handle_pong(self, msg_id, seq, reader):
|
async def _handle_pong(self, msg_id, seq, reader):
|
||||||
"""
|
"""
|
||||||
Handles pong results, which don't come inside a ``rpc_result``
|
Handles pong results, which don't come inside a ``rpc_result``
|
||||||
|
|
Loading…
Reference in New Issue
Block a user