Use new JSON interface in Python example.
This commit is contained in:
parent
00abe2f401
commit
0e824976fc
@ -18,31 +18,27 @@ if tdjson_path is None:
|
|||||||
tdjson = CDLL(tdjson_path)
|
tdjson = CDLL(tdjson_path)
|
||||||
|
|
||||||
# load TDLib functions from shared library
|
# load TDLib functions from shared library
|
||||||
td_json_client_create = tdjson.td_json_client_create
|
_td_create_client = tdjson.td_create_client
|
||||||
td_json_client_create.restype = c_void_p
|
_td_create_client.restype = c_int
|
||||||
td_json_client_create.argtypes = []
|
_td_create_client.argtypes = []
|
||||||
|
|
||||||
td_json_client_receive = tdjson.td_json_client_receive
|
_td_receive = tdjson.td_receive
|
||||||
td_json_client_receive.restype = c_char_p
|
_td_receive.restype = c_char_p
|
||||||
td_json_client_receive.argtypes = [c_void_p, c_double]
|
_td_receive.argtypes = [c_double]
|
||||||
|
|
||||||
td_json_client_send = tdjson.td_json_client_send
|
_td_send = tdjson.td_send
|
||||||
td_json_client_send.restype = None
|
_td_send.restype = None
|
||||||
td_json_client_send.argtypes = [c_void_p, c_char_p]
|
_td_send.argtypes = [c_int, c_char_p]
|
||||||
|
|
||||||
td_json_client_execute = tdjson.td_json_client_execute
|
_td_execute = tdjson.td_execute
|
||||||
td_json_client_execute.restype = c_char_p
|
_td_execute.restype = c_char_p
|
||||||
td_json_client_execute.argtypes = [c_void_p, c_char_p]
|
_td_execute.argtypes = [c_char_p]
|
||||||
|
|
||||||
td_json_client_destroy = tdjson.td_json_client_destroy
|
|
||||||
td_json_client_destroy.restype = None
|
|
||||||
td_json_client_destroy.argtypes = [c_void_p]
|
|
||||||
|
|
||||||
fatal_error_callback_type = CFUNCTYPE(None, c_char_p)
|
fatal_error_callback_type = CFUNCTYPE(None, c_char_p)
|
||||||
|
|
||||||
td_set_log_fatal_error_callback = tdjson.td_set_log_fatal_error_callback
|
_td_set_log_fatal_error_callback = tdjson.td_set_log_fatal_error_callback
|
||||||
td_set_log_fatal_error_callback.restype = None
|
_td_set_log_fatal_error_callback.restype = None
|
||||||
td_set_log_fatal_error_callback.argtypes = [fatal_error_callback_type]
|
_td_set_log_fatal_error_callback.argtypes = [fatal_error_callback_type]
|
||||||
|
|
||||||
# initialize TDLib log with desired parameters
|
# initialize TDLib log with desired parameters
|
||||||
def on_fatal_error_callback(error_message):
|
def on_fatal_error_callback(error_message):
|
||||||
@ -50,28 +46,28 @@ def on_fatal_error_callback(error_message):
|
|||||||
|
|
||||||
def td_execute(query):
|
def td_execute(query):
|
||||||
query = json.dumps(query).encode('utf-8')
|
query = json.dumps(query).encode('utf-8')
|
||||||
result = td_json_client_execute(None, query)
|
result = _td_execute(query)
|
||||||
if result:
|
if result:
|
||||||
result = json.loads(result.decode('utf-8'))
|
result = json.loads(result.decode('utf-8'))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
c_on_fatal_error_callback = fatal_error_callback_type(on_fatal_error_callback)
|
c_on_fatal_error_callback = fatal_error_callback_type(on_fatal_error_callback)
|
||||||
td_set_log_fatal_error_callback(c_on_fatal_error_callback)
|
_td_set_log_fatal_error_callback(c_on_fatal_error_callback)
|
||||||
|
|
||||||
# setting TDLib log verbosity level to 1 (errors)
|
# setting TDLib log verbosity level to 1 (errors)
|
||||||
print(td_execute({'@type': 'setLogVerbosityLevel', 'new_verbosity_level': 1, '@extra': 1.01234}))
|
print(td_execute({'@type': 'setLogVerbosityLevel', 'new_verbosity_level': 1, '@extra': 1.01234}))
|
||||||
|
|
||||||
|
|
||||||
# create client
|
# create client
|
||||||
client = td_json_client_create()
|
client_id = _td_create_client()
|
||||||
|
|
||||||
# simple wrappers for client usage
|
# simple wrappers for client usage
|
||||||
def td_send(query):
|
def td_send(query):
|
||||||
query = json.dumps(query).encode('utf-8')
|
query = json.dumps(query).encode('utf-8')
|
||||||
td_json_client_send(client, query)
|
_td_send(client_id, query)
|
||||||
|
|
||||||
def td_receive():
|
def td_receive():
|
||||||
result = td_json_client_receive(client, 1.0)
|
result = _td_receive(1.0)
|
||||||
if result:
|
if result:
|
||||||
result = json.loads(result.decode('utf-8'))
|
result = json.loads(result.decode('utf-8'))
|
||||||
return result
|
return result
|
||||||
@ -79,7 +75,7 @@ def td_receive():
|
|||||||
# another test for TDLib execute method
|
# another test for TDLib execute method
|
||||||
print(td_execute({'@type': 'getTextEntities', 'text': '@telegram /test_command https://telegram.org telegram.me', '@extra': ['5', 7.0]}))
|
print(td_execute({'@type': 'getTextEntities', 'text': '@telegram /test_command https://telegram.org telegram.me', '@extra': ['5', 7.0]}))
|
||||||
|
|
||||||
# testing TDLib send method
|
# start the client by sending request to it
|
||||||
td_send({'@type': 'getAuthorizationState', '@extra': 1.01234})
|
td_send({'@type': 'getAuthorizationState', '@extra': 1.01234})
|
||||||
|
|
||||||
# main events cycle
|
# main events cycle
|
||||||
@ -137,6 +133,3 @@ while True:
|
|||||||
# handle an incoming update or an answer to a previously sent request
|
# handle an incoming update or an answer to a previously sent request
|
||||||
print(event)
|
print(event)
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
# destroy client when it is closed and isn't needed anymore
|
|
||||||
td_json_client_destroy(client)
|
|
||||||
|
Loading…
Reference in New Issue
Block a user