From f4c0793a0b67713f74571d1971b26e1790f4b32f Mon Sep 17 00:00:00 2001
From: Dan <14043624+delivrance@users.noreply.github.com>
Date: Sun, 24 Jun 2018 18:26:11 +0200
Subject: [PATCH] Make session leaner by removing some redundant parameters
Related to #86
---
pyrogram/client/client.py | 38 ++++++++---------------
pyrogram/client/ext/base_client.py | 19 +++++++++++-
pyrogram/session/session.py | 48 ++++++++++--------------------
3 files changed, 47 insertions(+), 58 deletions(-)
diff --git a/pyrogram/client/client.py b/pyrogram/client/client.py
index 1897e8d3..dde583dc 100644
--- a/pyrogram/client/client.py
+++ b/pyrogram/client/client.py
@@ -187,12 +187,9 @@ class Client(Methods, BaseClient):
self.load_session()
self.session = Session(
+ self,
self.dc_id,
- self.test_mode,
- self._proxy,
- self.auth_key,
- self.api_id,
- client=self
+ self.auth_key
)
self.session.start()
@@ -372,12 +369,9 @@ class Client(Methods, BaseClient):
self.auth_key = Auth(self.dc_id, self.test_mode, self._proxy).create()
self.session = Session(
+ self,
self.dc_id,
- self.test_mode,
- self._proxy,
- self.auth_key,
- self.api_id,
- client=self
+ self.auth_key
)
self.session.start()
@@ -420,12 +414,9 @@ class Client(Methods, BaseClient):
self.auth_key = Auth(self.dc_id, self.test_mode, self._proxy).create()
self.session = Session(
+ self,
self.dc_id,
- self.test_mode,
- self._proxy,
- self.auth_key,
- self.api_id,
- client=self
+ self.auth_key
)
self.session.start()
@@ -1033,7 +1024,7 @@ class Client(Methods, BaseClient):
file_id = file_id or self.rnd_id()
md5_sum = md5() if not is_big and not is_missing_part else None
- session = Session(self.dc_id, self.test_mode, self._proxy, self.auth_key, self.api_id)
+ session = Session(self, self.dc_id, self.auth_key, is_media=True)
session.start()
try:
@@ -1117,11 +1108,10 @@ class Client(Methods, BaseClient):
)
session = Session(
+ self,
dc_id,
- self.test_mode,
- self._proxy,
Auth(dc_id, self.test_mode, self._proxy).create(),
- self.api_id
+ is_media=True
)
session.start()
@@ -1136,11 +1126,10 @@ class Client(Methods, BaseClient):
)
else:
session = Session(
+ self,
dc_id,
- self.test_mode,
- self._proxy,
self.auth_key,
- self.api_id
+ is_media=True
)
session.start()
@@ -1206,11 +1195,10 @@ class Client(Methods, BaseClient):
if cdn_session is None:
cdn_session = Session(
+ self,
r.dc_id,
- self.test_mode,
- self._proxy,
Auth(r.dc_id, self.test_mode, self._proxy).create(),
- self.api_id,
+ is_media=True,
is_cdn=True
)
diff --git a/pyrogram/client/ext/base_client.py b/pyrogram/client/ext/base_client.py
index d8e30283..cd54570d 100644
--- a/pyrogram/client/ext/base_client.py
+++ b/pyrogram/client/ext/base_client.py
@@ -16,17 +16,34 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+import platform
import re
from queue import Queue
from threading import Lock
+from pyrogram import __version__
from ..style import Markdown, HTML
from ...api.core import Object
-from ...session.internals import MsgId
from ...session import Session
+from ...session.internals import MsgId
class BaseClient:
+ APP_VERSION = "Pyrogram \U0001f525 {}".format(__version__)
+
+ DEVICE_MODEL = "{} {}".format(
+ platform.python_implementation(),
+ platform.python_version()
+ )
+
+ SYSTEM_VERSION = "{} {}".format(
+ platform.system(),
+ platform.release()
+ )
+
+ SYSTEM_LANG_CODE = "en"
+ LANG_CODE = "en"
+
INVITE_LINK_RE = re.compile(r"^(?:https?://)?(?:www\.)?(?:t(?:elegram)?\.(?:org|me|dog)/joinchat/)([\w-]+)$")
BOT_TOKEN_RE = re.compile(r"^\d+:[\w-]+$")
DIALOGS_AT_ONCE = 100
diff --git a/pyrogram/session/session.py b/pyrogram/session/session.py
index d8c8651d..b643650b 100644
--- a/pyrogram/session/session.py
+++ b/pyrogram/session/session.py
@@ -17,7 +17,6 @@
# along with Pyrogram. If not, see .
import logging
-import platform
import threading
import time
from datetime import timedelta, datetime
@@ -47,19 +46,6 @@ class Result:
class Session:
- VERSION = __version__
- APP_VERSION = "Pyrogram \U0001f525 {}".format(VERSION)
-
- DEVICE_MODEL = "{} {}".format(
- platform.python_implementation(),
- platform.python_version()
- )
-
- SYSTEM_VERSION = "{} {}".format(
- platform.system(),
- platform.release()
- )
-
INITIAL_SALT = 0x616e67656c696361
NET_WORKERS = 1
WAIT_TIMEOUT = 15
@@ -84,28 +70,24 @@ class Session:
}
def __init__(self,
+ client: pyrogram,
dc_id: int,
- test_mode: bool,
- proxy: dict,
auth_key: bytes,
- api_id: int,
- is_cdn: bool = False,
- client: pyrogram = None):
+ is_media: bool = False,
+ is_cdn: bool = False):
if not Session.notice_displayed:
print("Pyrogram v{}, {}".format(__version__, __copyright__))
print("Licensed under the terms of the " + __license__, end="\n\n")
Session.notice_displayed = True
- self.dc_id = dc_id
- self.test_mode = test_mode
- self.proxy = proxy
- self.api_id = api_id
- self.is_cdn = is_cdn
self.client = client
+ self.dc_id = dc_id
+ self.auth_key = auth_key
+ self.is_media = is_media
+ self.is_cdn = is_cdn
self.connection = None
- self.auth_key = auth_key
self.auth_key_id = sha1(auth_key).digest()[-8:]
self.session_id = Long(MsgId())
@@ -130,7 +112,7 @@ class Session:
def start(self):
while True:
- self.connection = Connection(DataCenter(self.dc_id, self.test_mode), self.proxy)
+ self.connection = Connection(DataCenter(self.dc_id, self.client.test_mode), self.client.proxy)
try:
self.connection.connect()
@@ -159,12 +141,14 @@ class Session:
functions.InvokeWithLayer(
layer,
functions.InitConnection(
- self.api_id,
- self.DEVICE_MODEL,
- self.SYSTEM_VERSION,
- self.APP_VERSION,
- "en", "", "en",
- functions.help.GetConfig(),
+ api_id=self.client.api_id,
+ device_model=self.client.DEVICE_MODEL,
+ system_version=self.client.SYSTEM_VERSION,
+ app_version=self.client.APP_VERSION,
+ system_lang_code=self.client.SYSTEM_LANG_CODE,
+ lang_code=self.client.LANG_CODE,
+ lang_pack="",
+ query=functions.help.GetConfig(),
)
)
)