mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-25 19:03:46 +03:00
Support more types to represent a date
This commit is contained in:
parent
75a342e24b
commit
3537e9bcc9
|
@ -1,4 +1,5 @@
|
|||
from datetime import datetime
|
||||
import struct
|
||||
from datetime import datetime, date
|
||||
from threading import Event
|
||||
|
||||
|
||||
|
@ -125,6 +126,23 @@ class TLObject:
|
|||
r.append(bytes(padding))
|
||||
return b''.join(r)
|
||||
|
||||
@staticmethod
|
||||
def serialize_datetime(dt):
|
||||
if not dt:
|
||||
return b'\0\0\0\0'
|
||||
|
||||
if isinstance(dt, datetime):
|
||||
dt = int(dt.timestamp())
|
||||
elif isinstance(dt, date):
|
||||
dt = int(datetime(dt.year, dt.month, dt.day, dt).timestamp())
|
||||
elif isinstance(dt, float):
|
||||
dt = int(dt)
|
||||
|
||||
if isinstance(dt, int):
|
||||
return struct.pack('<I', dt)
|
||||
|
||||
raise TypeError('Cannot interpret "{}" as a date.'.format(dt))
|
||||
|
||||
# These should be overrode
|
||||
def to_dict(self, recursive=True):
|
||||
return {}
|
||||
|
|
|
@ -540,11 +540,7 @@ class TLGenerator:
|
|||
builder.write('TLObject.serialize_bytes({})'.format(name))
|
||||
|
||||
elif 'date' == arg.type: # Custom format
|
||||
# 0 if datetime is None else int(datetime.timestamp())
|
||||
builder.write(
|
||||
r"b'\0\0\0\0' if {0} is None else "
|
||||
r"struct.pack('<I', int({0}.timestamp()))".format(name)
|
||||
)
|
||||
builder.write('TLObject.serialize_datetime({})'.format(name))
|
||||
|
||||
else:
|
||||
# Else it may be a custom type
|
||||
|
|
Loading…
Reference in New Issue
Block a user