Don't distinguish between str and bytes when serializing

This makes it easier to use some requests like ReqPqRequest which
needs a string of bytes, not a valid utf-8 string per se.
This commit is contained in:
Lonami Exo 2017-09-28 09:55:29 +02:00
parent 1518be0b95
commit fb0898b9cb
2 changed files with 4 additions and 5 deletions

View File

@ -87,6 +87,9 @@ class TLObject:
@staticmethod @staticmethod
def serialize_bytes(data): def serialize_bytes(data):
"""Write bytes by using Telegram guidelines""" """Write bytes by using Telegram guidelines"""
if isinstance(data, str):
data = data.encode('utf-8')
r = [] r = []
if len(data) < 254: if len(data) < 254:
padding = (len(data) + 1) % 4 padding = (len(data) + 1) % 4
@ -112,10 +115,6 @@ class TLObject:
r.append(bytes(padding)) r.append(bytes(padding))
return b''.join(r) return b''.join(r)
@staticmethod
def serialize_string(string):
return TLObject.serialize_bytes(string.encode('utf-8'))
# These should be overrode # These should be overrode
def to_dict(self, recursive=True): def to_dict(self, recursive=True):
return {} return {}

View File

@ -493,7 +493,7 @@ class TLGenerator:
builder.write("struct.pack('<d', {})".format(name)) builder.write("struct.pack('<d', {})".format(name))
elif 'string' == arg.type: elif 'string' == arg.type:
builder.write('TLObject.serialize_string({})'.format(name)) builder.write('TLObject.serialize_bytes({})'.format(name))
elif 'Bool' == arg.type: elif 'Bool' == arg.type:
# 0x997275b5 if boolean else 0xbc799737 # 0x997275b5 if boolean else 0xbc799737