mirror of
https://github.com/Mayuri-Chan/pyrofork.git
synced 2025-12-30 20:34:51 +00:00
Move file_id codec outside
This commit is contained in:
parent
13d25f4e4a
commit
28ffff57e1
2 changed files with 38 additions and 37 deletions
|
|
@ -16,11 +16,11 @@
|
|||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from base64 import b64encode, b64decode
|
||||
from struct import pack
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import types
|
||||
from ..utils import encode
|
||||
|
||||
# TODO: Organize the code better?
|
||||
|
||||
|
|
@ -534,39 +534,3 @@ def parse_message_service(
|
|||
m.pinned_message = parse_message_service(client, message, users, chats)
|
||||
|
||||
return m
|
||||
|
||||
|
||||
def decode(s: str) -> bytes:
|
||||
s = b64decode(s + "=" * (-len(s) % 4), "-_")
|
||||
r = b""
|
||||
|
||||
assert s[-1] == 2
|
||||
|
||||
i = 0
|
||||
while i < len(s) - 1:
|
||||
if s[i] != 0:
|
||||
r += bytes([s[i]])
|
||||
else:
|
||||
r += b"\x00" * s[i + 1]
|
||||
i += 1
|
||||
|
||||
i += 1
|
||||
|
||||
return r
|
||||
|
||||
|
||||
def encode(s: bytes) -> str:
|
||||
r = b""
|
||||
n = 0
|
||||
|
||||
for i in s + bytes([2]):
|
||||
if i == 0:
|
||||
n += 1
|
||||
else:
|
||||
if n:
|
||||
r += b"\x00" + bytes([n])
|
||||
n = 0
|
||||
|
||||
r += bytes([i])
|
||||
|
||||
return b64encode(r, b"-_").decode().rstrip("=")
|
||||
|
|
|
|||
37
pyrogram/client/utils.py
Normal file
37
pyrogram/client/utils.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
from base64 import b64decode, b64encode
|
||||
|
||||
|
||||
def decode(s: str) -> bytes:
|
||||
s = b64decode(s + "=" * (-len(s) % 4), "-_")
|
||||
r = b""
|
||||
|
||||
assert s[-1] == 2
|
||||
|
||||
i = 0
|
||||
while i < len(s) - 1:
|
||||
if s[i] != 0:
|
||||
r += bytes([s[i]])
|
||||
else:
|
||||
r += b"\x00" * s[i + 1]
|
||||
i += 1
|
||||
|
||||
i += 1
|
||||
|
||||
return r
|
||||
|
||||
|
||||
def encode(s: bytes) -> str:
|
||||
r = b""
|
||||
n = 0
|
||||
|
||||
for i in s + bytes([2]):
|
||||
if i == 0:
|
||||
n += 1
|
||||
else:
|
||||
if n:
|
||||
r += b"\x00" + bytes([n])
|
||||
n = 0
|
||||
|
||||
r += bytes([i])
|
||||
|
||||
return b64encode(r, b"-_").decode().rstrip("=")
|
||||
Loading…
Reference in a new issue