maxapi-python 2.1.0__py3-none-any.whl → 2.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {maxapi_python-2.1.0.dist-info → maxapi_python-2.1.1.dist-info}/METADATA +1 -1
- {maxapi_python-2.1.0.dist-info → maxapi_python-2.1.1.dist-info}/RECORD +10 -10
- pymax/__init__.py +1 -1
- pymax/api/self/service.py +11 -4
- pymax/api/uploads/service.py +4 -2
- pymax/app.py +4 -0
- pymax/infra/self.py +2 -6
- pymax/transport/tcp.py +4 -2
- {maxapi_python-2.1.0.dist-info → maxapi_python-2.1.1.dist-info}/WHEEL +0 -0
- {maxapi_python-2.1.0.dist-info → maxapi_python-2.1.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
pymax/__init__.py,sha256
|
|
2
|
-
pymax/app.py,sha256=
|
|
1
|
+
pymax/__init__.py,sha256=4tc91HCbTG_Xq6M7IPdc3sF_7bpScpoXEG0CQZyvDAs,1255
|
|
2
|
+
pymax/app.py,sha256=3FlgRT7Lj4LxoRQfSsuw1kHby5au6klhxnjHBXrvmQ0,9819
|
|
3
3
|
pymax/base.py,sha256=Q6FR5K1nOaeVnYlzRgqC6_v7AWUiJJCkI4TuzCYbj-U,7255
|
|
4
4
|
pymax/client.py,sha256=KiDEiUL49IGxRtq4-Sr3IABa8Rh1TRPq41Gv5jH2m_Q,4013
|
|
5
5
|
pymax/client_web.py,sha256=iTwlsY75d_wg-vUGObTq7SVinp0L__2r8cvG49BtmUI,3041
|
|
@@ -31,7 +31,7 @@ pymax/api/messages/service.py,sha256=N5_KYArZB-VX7kOLMfkrwzrpNgvqNFLRLOym_ghM6IQ
|
|
|
31
31
|
pymax/api/self/__init__.py,sha256=TfbqL4xLb5IMhbW8mlAK-AwVFqqPWMADogKZeWtkw0A,79
|
|
32
32
|
pymax/api/self/enums.py,sha256=iKEqPy44LyQKvAPfyhpkSXgmWWohxry73F0CVgtekwY,180
|
|
33
33
|
pymax/api/self/payloads.py,sha256=-SFqkNxC5ZLKnLty_Gyz_b_P3X1esu_7Urb4HjrQxM4,774
|
|
34
|
-
pymax/api/self/service.py,sha256=
|
|
34
|
+
pymax/api/self/service.py,sha256=Fr4PlGT4Vn50kVQC9rleZu5UTvxLjTAsfR5mxY2IIUw,4921
|
|
35
35
|
pymax/api/session/__init__.py,sha256=zo-rCKBVBsFK-810T-Le4VbAYKt109cQ6elf0UkgiNk,36
|
|
36
36
|
pymax/api/session/enums.py,sha256=InBdwAu_filqW3rMfGrOkHgmFfqgB1ytjnCcxDq29xc,236
|
|
37
37
|
pymax/api/session/payloads.py,sha256=mDXgI_oVfqLim7J9F9BMUwKx9Vs8EknJ02kstrF3ClE,2340
|
|
@@ -39,7 +39,7 @@ pymax/api/session/service.py,sha256=8ELcsnKNHLT8hgExw5laZvHF6SIOSQB6RpXoxf1rbbI,
|
|
|
39
39
|
pymax/api/uploads/__init__.py,sha256=E7INNsBeMStze2VWMADX4mrswsQeJb85C71sSuiOpv0,35
|
|
40
40
|
pymax/api/uploads/models.py,sha256=c2Yunnl9nRkDZuItXGKlY0Oi5DjnB4f5bcruQ49ARZk,934
|
|
41
41
|
pymax/api/uploads/payloads.py,sha256=hf0MwLdtTHnt5KGONbV4hnByjy5X0PJLqer6uq9nuuw,694
|
|
42
|
-
pymax/api/uploads/service.py,sha256=
|
|
42
|
+
pymax/api/uploads/service.py,sha256=qiYYPqryWr9h0EOWrglWz6z70I3UYXgBglTn0e0USFY,19533
|
|
43
43
|
pymax/api/users/__init__.py,sha256=CDakgSKwVAkX-kNoDmIo2JsFPsS7Nx3j2vIMwQnPRck,82
|
|
44
44
|
pymax/api/users/enums.py,sha256=m3d225sjWkBIRF5NNi3ChnyZ6BgKUEbPYoYwVjpifZ4,205
|
|
45
45
|
pymax/api/users/payloads.py,sha256=VoXXctQDl7WXt5zqoRKzdONqmris5Cxf7-6Hy_Gcd-A,288
|
|
@@ -80,7 +80,7 @@ pymax/infra/bots.py,sha256=IJs4ErFxjbMeiHfQgpDiDhtEu9ws-lIp8fb8I96szy8,1202
|
|
|
80
80
|
pymax/infra/chat.py,sha256=gZdkciUl_BCnPucxb8JubQ6phPCTcmVfX9C3edKXZRM,12690
|
|
81
81
|
pymax/infra/message.py,sha256=Hee5z9a47aZRnSAvTMdTaa5BzwMnOnSoB-z3JVX3J3o,8518
|
|
82
82
|
pymax/infra/protocol.py,sha256=I2WrAeAgATuNSdK2gvHU-MhhxdRBfSMGMovF5HPFsQw,208
|
|
83
|
-
pymax/infra/self.py,sha256=
|
|
83
|
+
pymax/infra/self.py,sha256=h2GnzcCF2-FeY9-qBjtHjrSCx7elc4RjuCXPaewDkgg,4828
|
|
84
84
|
pymax/infra/user.py,sha256=nv9jkWpWvCWETHZsyUMmm5FWkzLTJT2SHXZ7SglZE8M,4331
|
|
85
85
|
pymax/protocol/__init__.py,sha256=rDn1Twi1iBDUk1155YI9jyeQyaGVDRuPoWdlaaLZnsw,242
|
|
86
86
|
pymax/protocol/base.py,sha256=_bisk1BU_GSMSPIqfnizSCgm_qBrdbB5cJw6foAa2tc,294
|
|
@@ -103,7 +103,7 @@ pymax/telemetry/payloads.py,sha256=MCKYGpQ4Tvx_8LH86Et0yevea2Th2z3b7a9pfmrQRys,3
|
|
|
103
103
|
pymax/telemetry/service.py,sha256=xuAUsLt0QOwypxn8NjSUtSTfcZxgIY9YVWnvZ-KawZY,7120
|
|
104
104
|
pymax/transport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
105
105
|
pymax/transport/base.py,sha256=0D3srQ36F0s23pIjqd6YzRGKK9wCmXKr3wfe2XYYlos,448
|
|
106
|
-
pymax/transport/tcp.py,sha256=
|
|
106
|
+
pymax/transport/tcp.py,sha256=aV7KzjAbjtQ7irTKsdlfDyZWhREW1QqOe_fBZSxMekE,3097
|
|
107
107
|
pymax/transport/websocket.py,sha256=0ezkSoENWKV00EATIizGx16-ihCnaTC76zzGnwbS_3c,1504
|
|
108
108
|
pymax/types/__init__.py,sha256=y77mfDRgxmfcamobi0rj2d3PsxhH0zxyvKPhL2iUdS8,44
|
|
109
109
|
pymax/types/domain/__init__.py,sha256=R4iJv0b5gnNVG3MrerVlGVzPvNR-n36QZFukEX64fn4,470
|
|
@@ -141,7 +141,7 @@ pymax/types/events/__init__.py,sha256=fNLP_8zYRsew2k-1s8wXCJeSPm8QQ4gmiZ86B51SuC
|
|
|
141
141
|
pymax/types/events/file.py,sha256=XhpXn0Vt9OODkx1OkGb9jfQwc1uNgz1NTn_j9FZnQ8s,102
|
|
142
142
|
pymax/types/events/message.py,sha256=d4dlnpu3VCtZ4vFdRXaACvydAE9sbGGkk52E48K0U_U,1248
|
|
143
143
|
pymax/types/events/video.py,sha256=swBHYadmDS0SjLXGqVqRYsuMoVZ6MjD2aYR2fbM-AJc,104
|
|
144
|
-
maxapi_python-2.1.
|
|
145
|
-
maxapi_python-2.1.
|
|
146
|
-
maxapi_python-2.1.
|
|
147
|
-
maxapi_python-2.1.
|
|
144
|
+
maxapi_python-2.1.1.dist-info/METADATA,sha256=2z2avbn6KZLKC63s-N9Gl8Wu78IsT75BMkas8p6rZi0,7637
|
|
145
|
+
maxapi_python-2.1.1.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
|
|
146
|
+
maxapi_python-2.1.1.dist-info/licenses/LICENSE,sha256=hOR249ItqMdcly1A0amqEWRNRTq4Gv5NJtmQ3A5qK4E,1070
|
|
147
|
+
maxapi_python-2.1.1.dist-info/RECORD,,
|
pymax/__init__.py
CHANGED
pymax/api/self/service.py
CHANGED
|
@@ -9,6 +9,7 @@ from pymax.api.response import (
|
|
|
9
9
|
require_payload_item_model,
|
|
10
10
|
require_payload_model,
|
|
11
11
|
)
|
|
12
|
+
from pymax.files import Photo
|
|
12
13
|
from pymax.logging import get_logger
|
|
13
14
|
from pymax.protocol import Opcode
|
|
14
15
|
from pymax.types.domain import FolderList, FolderUpdate, Profile
|
|
@@ -47,15 +48,20 @@ class SelfService:
|
|
|
47
48
|
first_name: str,
|
|
48
49
|
last_name: str | None = None,
|
|
49
50
|
description: str | None = None,
|
|
50
|
-
photo:
|
|
51
|
+
photo: Photo | None = None,
|
|
51
52
|
*,
|
|
52
53
|
photo_token: str | None = None,
|
|
53
54
|
) -> bool:
|
|
54
55
|
if photo is not None:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
"Pass photo_token instead."
|
|
56
|
+
attach = await self.app.api.uploads.upload_photo(
|
|
57
|
+
photo, profile=True
|
|
58
58
|
)
|
|
59
|
+
if photo_token:
|
|
60
|
+
logger.warning(
|
|
61
|
+
"photo_token argument was provided but will be overridden by the uploaded photo token"
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
photo_token = attach.photo_token
|
|
59
65
|
|
|
60
66
|
frame = ChangeProfilePayload(
|
|
61
67
|
first_name=first_name,
|
|
@@ -145,6 +151,7 @@ class SelfService:
|
|
|
145
151
|
return False
|
|
146
152
|
|
|
147
153
|
await self.app.store.update_token(self.app.session.token, token)
|
|
154
|
+
self.app.session.token = token
|
|
148
155
|
|
|
149
156
|
return True
|
|
150
157
|
|
pymax/api/uploads/service.py
CHANGED
|
@@ -51,11 +51,13 @@ class UploadService:
|
|
|
51
51
|
self.on_file_attach
|
|
52
52
|
)
|
|
53
53
|
|
|
54
|
-
async def upload_photo(
|
|
54
|
+
async def upload_photo(
|
|
55
|
+
self, photo: Photo, profile: bool = False
|
|
56
|
+
) -> AttachPhotoPayload:
|
|
55
57
|
logger.info("Uploading photo")
|
|
56
58
|
logger.debug("Preparing photo upload payload")
|
|
57
59
|
|
|
58
|
-
payload = UploadPayload().model_dump()
|
|
60
|
+
payload = UploadPayload(profile=profile).model_dump()
|
|
59
61
|
|
|
60
62
|
try:
|
|
61
63
|
data = await self.app.invoke(
|
pymax/app.py
CHANGED
|
@@ -135,6 +135,10 @@ class App(Generic[ClientT]):
|
|
|
135
135
|
self.config.device.user_agent,
|
|
136
136
|
)
|
|
137
137
|
|
|
138
|
+
if response.token != self.session.token:
|
|
139
|
+
await self.store.update_token(self.session.token, response.token)
|
|
140
|
+
self.session.token = response.token
|
|
141
|
+
|
|
138
142
|
self.me = response.profile
|
|
139
143
|
self.chats = response.chats
|
|
140
144
|
self.users[self.me.contact.id] = self.me.contact
|
pymax/infra/self.py
CHANGED
|
@@ -29,17 +29,13 @@ class SelfMixin(IClientProtocol):
|
|
|
29
29
|
first_name: Имя профиля.
|
|
30
30
|
last_name: Фамилия профиля.
|
|
31
31
|
description: Описание профиля.
|
|
32
|
-
photo: Файл или объект
|
|
33
|
-
|
|
32
|
+
photo: Файл или объект фото, который нужно загрузить как новую
|
|
33
|
+
фотографию профиля.
|
|
34
34
|
photo_token: Токен фотографии, уже загруженной через API Max.
|
|
35
35
|
|
|
36
36
|
Returns:
|
|
37
37
|
``True`` после успешного обновления. Клиент также обновит
|
|
38
38
|
``client.me`` и кеш текущего контакта.
|
|
39
|
-
|
|
40
|
-
Raises:
|
|
41
|
-
NotImplementedError: Если передан ``photo`` вместо
|
|
42
|
-
``photo_token``.
|
|
43
39
|
"""
|
|
44
40
|
return await self._app.api.account.change_profile(
|
|
45
41
|
first_name=first_name,
|
pymax/transport/tcp.py
CHANGED
|
@@ -33,10 +33,12 @@ class TCPTransport(Transport):
|
|
|
33
33
|
sock = await proxy.connect(
|
|
34
34
|
dest_host=self._host,
|
|
35
35
|
dest_port=self._port,
|
|
36
|
-
ssl=self._use_ssl,
|
|
37
36
|
)
|
|
37
|
+
server_hostname = self._host if self._use_ssl else None
|
|
38
38
|
self._reader, self._writer = await asyncio.open_connection(
|
|
39
|
-
sock=sock,
|
|
39
|
+
sock=sock,
|
|
40
|
+
ssl=self._use_ssl,
|
|
41
|
+
server_hostname=server_hostname,
|
|
40
42
|
)
|
|
41
43
|
logger.info(
|
|
42
44
|
"tcp connected via proxy %s host=%s port=%s ssl=%s",
|
|
File without changes
|
|
File without changes
|