maxapi-python 0.1.2__py3-none-any.whl → 1.0.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-0.1.2.dist-info → maxapi_python-1.0.1.dist-info}/METADATA +3 -1
- maxapi_python-1.0.1.dist-info/RECORD +27 -0
- {maxapi_python-0.1.2.dist-info → maxapi_python-1.0.1.dist-info}/licenses/LICENSE +21 -21
- pymax/__init__.py +55 -55
- pymax/core.py +170 -156
- pymax/crud.py +99 -99
- pymax/exceptions.py +29 -20
- pymax/files.py +86 -85
- pymax/filters.py +38 -38
- pymax/interfaces.py +73 -67
- pymax/mixins/__init__.py +20 -18
- pymax/mixins/auth.py +81 -81
- pymax/mixins/channel.py +25 -25
- pymax/mixins/group.py +220 -220
- pymax/mixins/handler.py +60 -60
- pymax/mixins/message.py +293 -293
- pymax/mixins/self.py +38 -38
- pymax/mixins/telemetry.py +114 -0
- pymax/mixins/user.py +82 -82
- pymax/mixins/websocket.py +262 -242
- pymax/models.py +8 -8
- pymax/navigation.py +185 -0
- pymax/payloads.py +195 -175
- pymax/static.py +210 -210
- pymax/types.py +434 -432
- pymax/utils.py +38 -38
- maxapi_python-0.1.2.dist-info/RECORD +0 -25
- {maxapi_python-0.1.2.dist-info → maxapi_python-1.0.1.dist-info}/WHEEL +0 -0
pymax/utils.py
CHANGED
@@ -1,38 +1,38 @@
|
|
1
|
-
from typing import Any
|
2
|
-
|
3
|
-
import lz4.block
|
4
|
-
import msgpack
|
5
|
-
|
6
|
-
|
7
|
-
def unpack_packet(data: bytes) -> None | dict[str, Any]:
|
8
|
-
ver = int.from_bytes(data[0:1], "big")
|
9
|
-
cmd = int.from_bytes(data[1:3], "big")
|
10
|
-
seq = int.from_bytes(data[3:4], "big")
|
11
|
-
opcode = int.from_bytes(data[4:6], "big")
|
12
|
-
packed_len = int.from_bytes(data[6:10], "big", signed=False)
|
13
|
-
comp_flag = packed_len >> 24
|
14
|
-
payload_length = packed_len & 0xFFFFFF
|
15
|
-
payload_bytes = data[10 : 10 + payload_length]
|
16
|
-
if comp_flag != 0:
|
17
|
-
compressed_data = payload_bytes
|
18
|
-
try:
|
19
|
-
payload_bytes = lz4.block.decompress(compressed_data, uncompressed_size=255)
|
20
|
-
except lz4.block.LZ4BlockError:
|
21
|
-
return None
|
22
|
-
payload = msgpack.unpackb(payload_bytes, raw=False)
|
23
|
-
return {"ver": ver, "cmd": cmd, "seq": seq, "opcode": opcode, "payload": payload}
|
24
|
-
|
25
|
-
|
26
|
-
# ToDo: Add lz4 compression
|
27
|
-
def pack_packet(
|
28
|
-
ver: int, cmd: int, seq: int, opcode: int, payload: dict[str, Any]
|
29
|
-
) -> bytes:
|
30
|
-
ver_b = ver.to_bytes(1, "big")
|
31
|
-
cmd_b = cmd.to_bytes(2, "big")
|
32
|
-
seq_b = seq.to_bytes(1, "big")
|
33
|
-
opcode_b = opcode.to_bytes(2, "big")
|
34
|
-
payload_bytes = msgpack.packb(payload)
|
35
|
-
if payload_bytes is None:
|
36
|
-
payload_bytes = b""
|
37
|
-
payload_len_b = len(payload_bytes).to_bytes(4, "big")
|
38
|
-
return ver_b + cmd_b + seq_b + opcode_b + payload_len_b + payload_bytes
|
1
|
+
from typing import Any
|
2
|
+
|
3
|
+
import lz4.block
|
4
|
+
import msgpack
|
5
|
+
|
6
|
+
|
7
|
+
def unpack_packet(data: bytes) -> None | dict[str, Any]:
|
8
|
+
ver = int.from_bytes(data[0:1], "big")
|
9
|
+
cmd = int.from_bytes(data[1:3], "big")
|
10
|
+
seq = int.from_bytes(data[3:4], "big")
|
11
|
+
opcode = int.from_bytes(data[4:6], "big")
|
12
|
+
packed_len = int.from_bytes(data[6:10], "big", signed=False)
|
13
|
+
comp_flag = packed_len >> 24
|
14
|
+
payload_length = packed_len & 0xFFFFFF
|
15
|
+
payload_bytes = data[10 : 10 + payload_length]
|
16
|
+
if comp_flag != 0:
|
17
|
+
compressed_data = payload_bytes
|
18
|
+
try:
|
19
|
+
payload_bytes = lz4.block.decompress(compressed_data, uncompressed_size=255)
|
20
|
+
except lz4.block.LZ4BlockError:
|
21
|
+
return None
|
22
|
+
payload = msgpack.unpackb(payload_bytes, raw=False)
|
23
|
+
return {"ver": ver, "cmd": cmd, "seq": seq, "opcode": opcode, "payload": payload}
|
24
|
+
|
25
|
+
|
26
|
+
# ToDo: Add lz4 compression
|
27
|
+
def pack_packet(
|
28
|
+
ver: int, cmd: int, seq: int, opcode: int, payload: dict[str, Any]
|
29
|
+
) -> bytes:
|
30
|
+
ver_b = ver.to_bytes(1, "big")
|
31
|
+
cmd_b = cmd.to_bytes(2, "big")
|
32
|
+
seq_b = seq.to_bytes(1, "big")
|
33
|
+
opcode_b = opcode.to_bytes(2, "big")
|
34
|
+
payload_bytes = msgpack.packb(payload)
|
35
|
+
if payload_bytes is None:
|
36
|
+
payload_bytes = b""
|
37
|
+
payload_len_b = len(payload_bytes).to_bytes(4, "big")
|
38
|
+
return ver_b + cmd_b + seq_b + opcode_b + payload_len_b + payload_bytes
|
@@ -1,25 +0,0 @@
|
|
1
|
-
pymax/__init__.py,sha256=I-ZUVKBfHN-MPkLUbLPxflsvnHSFsyXdW3TmbN2_zz0,950
|
2
|
-
pymax/core.py,sha256=DjwhOXmMoPl2pT9k18lrZLjlyvzPqkby6hIbPEYlctM,6001
|
3
|
-
pymax/crud.py,sha256=_V88YErPKE4k0jPjGn8Op9FDGGVuNwRjuKN-4iIVdgM,3306
|
4
|
-
pymax/exceptions.py,sha256=tiD_JD-MYSb4qFyKov-KWOm0zlD1p_gG6nf1fV-0-SY,702
|
5
|
-
pymax/files.py,sha256=Bdvzb8xzMCstRHClldj6bh6TE-AplHG3hInjOnGU6f8,2712
|
6
|
-
pymax/filters.py,sha256=EKNDzB3jjxlfjMGs3HivFvuQ1HSuYn-xKCxvmRFmq6c,1344
|
7
|
-
pymax/interfaces.py,sha256=xAlzVgS4RLChlChZ6WbKLWGezO_b0fHC_2NBePMtyVI,2179
|
8
|
-
pymax/models.py,sha256=7sWAmVuJjM7SPnDkpYEi8CARbTpUKbXqtWKMQdwd0w0,209
|
9
|
-
pymax/payloads.py,sha256=Pp4vc3BwKzqqWpIce_NhlNw9FA7i6Jhd-hRPg1Ld8Xg,3702
|
10
|
-
pymax/static.py,sha256=LQBXSWpiA3a4IWGqC84jTt7LBHSKEqnLDlvgSiMrX_M,4891
|
11
|
-
pymax/types.py,sha256=Fsf7_8rkUnCZ7zG_A9P4WJG8wfY8YxZcc-mRLEL3kU0,14140
|
12
|
-
pymax/utils.py,sha256=2QnhUb1o-vAIthtodtfrxty9v-qd96OtMd2GMG0n5h4,1402
|
13
|
-
pymax/mixins/__init__.py,sha256=yFhB18-PMhn5yIbvIh_XBCTIdkf87M1hmsmMwL9ved0,371
|
14
|
-
pymax/mixins/auth.py,sha256=eIlJ5YY7ez99nQuICTu97XWoeKgcjk3ZVhb73qbAsMw,3160
|
15
|
-
pymax/mixins/channel.py,sha256=juLIojxsmTXstYfE9pVc98gZ9VSVZJy-chLSDOxay0A,848
|
16
|
-
pymax/mixins/group.py,sha256=5MH2S78Q0JxcECEopGPi80QjcTO5bQNOwYLgRx3Gkt4,8040
|
17
|
-
pymax/mixins/handler.py,sha256=S6zGnm6U9yNY7LU1MV0TsYQj3MXkeOhiuUGlXyM2kTw,2164
|
18
|
-
pymax/mixins/message.py,sha256=pm4YFRmmYdldnk3G4rfjwAbodY-TfeIIvFHez6Xse_o,10542
|
19
|
-
pymax/mixins/self.py,sha256=Z1FiWFXJf3Qu9mKTQGrobe01bx4opa-uH5p6wedRWbI,1207
|
20
|
-
pymax/mixins/user.py,sha256=V8HLhLMopxItWfc4BF9P3eFjF8ksGAepkqaXrJ1e0ZE,3127
|
21
|
-
pymax/mixins/websocket.py,sha256=o7ITyScJNcoBP93dg9itLfGWl1oHmJy31K42j5sUTJQ,9736
|
22
|
-
maxapi_python-0.1.2.dist-info/METADATA,sha256=jWYrhQ_-auSt6H_q5vS5OrH6QeQvQ_heeIu-sGSBsas,5930
|
23
|
-
maxapi_python-0.1.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
24
|
-
maxapi_python-0.1.2.dist-info/licenses/LICENSE,sha256=Ud-0SKeXO_yA02Bb1nMDnEaSGwz2OqNlfGQbk0IzqPI,1085
|
25
|
-
maxapi_python-0.1.2.dist-info/RECORD,,
|
File without changes
|