upd tox
This commit is contained in:
parent
3f1bddb3cd
commit
5781bb3f8f
1 changed files with 41 additions and 26 deletions
67
src/tox.py
67
src/tox.py
|
@ -34,6 +34,15 @@ class LibToxCore(object):
|
||||||
return self._libtoxcore.__getattr__(item)
|
return self._libtoxcore.__getattr__(item)
|
||||||
|
|
||||||
|
|
||||||
|
def string_to_bin(tox_id):
|
||||||
|
return c_char_p(tox_id.decode('hex'))
|
||||||
|
|
||||||
|
|
||||||
|
def bin_to_string(raw_id, length):
|
||||||
|
res = ''.join('{:02x}'.format(ord(raw_id[i])) for i in xrange(length))
|
||||||
|
return res.upper()
|
||||||
|
|
||||||
|
|
||||||
class Tox(object):
|
class Tox(object):
|
||||||
libtoxcore = LibToxCore()
|
libtoxcore = LibToxCore()
|
||||||
|
|
||||||
|
@ -274,16 +283,16 @@ class Tox(object):
|
||||||
def self_get_address(self, address=None):
|
def self_get_address(self, address=None):
|
||||||
"""
|
"""
|
||||||
Writes the Tox friend address of the client to a byte array. The address is not in human-readable format. If a
|
Writes the Tox friend address of the client to a byte array. The address is not in human-readable format. If a
|
||||||
client wants to display the address, formatting is required.
|
client wants to display the address, formatting is required.
|
||||||
|
|
||||||
:param address: pointer (c_char_p) to a memory region of at least TOX_ADDRESS_SIZE bytes. If this parameter is
|
:param address: pointer (c_char_p) to a memory region of at least TOX_ADDRESS_SIZE bytes. If this parameter is
|
||||||
None, this function allocates memory for address.
|
None, this function allocates memory for address.
|
||||||
:return: pointer (c_char_p) to a memory region with the Tox friend address
|
:return: Tox friend address
|
||||||
"""
|
"""
|
||||||
if address is None:
|
if address is None:
|
||||||
address = create_string_buffer(TOX_ADDRESS_SIZE)
|
address = create_string_buffer(TOX_ADDRESS_SIZE)
|
||||||
Tox.libtoxcore.tox_self_get_address(self._tox_pointer, address)
|
Tox.libtoxcore.tox_self_get_address(self._tox_pointer, address)
|
||||||
return address
|
return bin_to_string(address, TOX_ADDRESS_SIZE)
|
||||||
|
|
||||||
def self_set_nospam(self, nospam):
|
def self_set_nospam(self, nospam):
|
||||||
"""
|
"""
|
||||||
|
@ -307,12 +316,12 @@ class Tox(object):
|
||||||
|
|
||||||
:param public_key: A memory region of at least TOX_PUBLIC_KEY_SIZE bytes. If this parameter is NULL, this
|
:param public_key: A memory region of at least TOX_PUBLIC_KEY_SIZE bytes. If this parameter is NULL, this
|
||||||
function allocates memory for Tox Public Key.
|
function allocates memory for Tox Public Key.
|
||||||
:return: pointer (c_char_p) to a memory region with the Tox Public Key
|
:return: Tox Public Key
|
||||||
"""
|
"""
|
||||||
if public_key is None:
|
if public_key is None:
|
||||||
public_key = create_string_buffer(TOX_PUBLIC_KEY_SIZE)
|
public_key = create_string_buffer(TOX_PUBLIC_KEY_SIZE)
|
||||||
Tox.libtoxcore.tox_self_get_public_key(self._tox_pointer, public_key)
|
Tox.libtoxcore.tox_self_get_public_key(self._tox_pointer, public_key)
|
||||||
return public_key
|
return bin_to_string(public_key, TOX_PUBLIC_KEY_SIZE)
|
||||||
|
|
||||||
def self_get_secret_key(self, secret_key=None):
|
def self_get_secret_key(self, secret_key=None):
|
||||||
"""
|
"""
|
||||||
|
@ -320,12 +329,12 @@ class Tox(object):
|
||||||
|
|
||||||
:param secret_key: pointer (c_char_p) to a memory region of at least TOX_SECRET_KEY_SIZE bytes. If this
|
:param secret_key: pointer (c_char_p) to a memory region of at least TOX_SECRET_KEY_SIZE bytes. If this
|
||||||
parameter is NULL, this function allocates memory for Tox Secret Key.
|
parameter is NULL, this function allocates memory for Tox Secret Key.
|
||||||
:return: pointer (c_char_p) to a memory region with the Tox Secret Key
|
:return: Tox Secret Key
|
||||||
"""
|
"""
|
||||||
if secret_key is None:
|
if secret_key is None:
|
||||||
secret_key = create_string_buffer(TOX_PUBLIC_KEY_SIZE)
|
secret_key = create_string_buffer(TOX_SECRET_KEY_SIZE)
|
||||||
Tox.libtoxcore.tox_self_get_secret_key(self._tox_pointer, secret_key)
|
Tox.libtoxcore.tox_self_get_secret_key(self._tox_pointer, secret_key)
|
||||||
return secret_key
|
return bin_to_string(secret_key, TOX_SECRET_KEY_SIZE)
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
# User-visible client information (nickname/status)
|
# User-visible client information (nickname/status)
|
||||||
|
@ -602,22 +611,23 @@ class Tox(object):
|
||||||
Tox.libtoxcore.tox_self_get_friend_list(self._tox_pointer, friend_list)
|
Tox.libtoxcore.tox_self_get_friend_list(self._tox_pointer, friend_list)
|
||||||
return friend_list[0:friend_list_size]
|
return friend_list[0:friend_list_size]
|
||||||
|
|
||||||
def friend_get_public_key(self, friend_number, public_key):
|
def friend_get_public_key(self, friend_number, public_key=None):
|
||||||
"""
|
"""
|
||||||
Copies the Public Key associated with a given friend number to a byte array.
|
Copies the Public Key associated with a given friend number to a byte array.
|
||||||
|
|
||||||
:param friend_number: The friend number you want the Public Key of.
|
:param friend_number: The friend number you want the Public Key of.
|
||||||
:param public_key: pointer (c_char_p) to a memory region of at least TOX_PUBLIC_KEY_SIZE bytes. If this
|
:param public_key: pointer (c_char_p) to a memory region of at least TOX_PUBLIC_KEY_SIZE bytes. If this
|
||||||
parameter is None, this function has no effect.
|
parameter is None, this function allocates memory for Tox Public Key.
|
||||||
:return: True on success.
|
:return: Tox Public Key
|
||||||
"""
|
"""
|
||||||
|
if public_key is None:
|
||||||
|
public_key = create_string_buffer(TOX_PUBLIC_KEY_SIZE)
|
||||||
tox_err_friend_get_public_key = c_int()
|
tox_err_friend_get_public_key = c_int()
|
||||||
result = Tox.libtoxcore.tox_friend_get_public_key(self._tox_pointer, c_uint32(friend_number),
|
Tox.libtoxcore.tox_friend_get_public_key(self._tox_pointer, c_uint32(friend_number), public_key,
|
||||||
c_char_p(public_key),
|
addressof(tox_err_friend_get_public_key))
|
||||||
addressof(tox_err_friend_get_public_key))
|
|
||||||
tox_err_friend_get_public_key = tox_err_friend_get_public_key.value
|
tox_err_friend_get_public_key = tox_err_friend_get_public_key.value
|
||||||
if tox_err_friend_get_public_key == TOX_ERR_FRIEND_GET_PUBLIC_KEY['OK']:
|
if tox_err_friend_get_public_key == TOX_ERR_FRIEND_GET_PUBLIC_KEY['OK']:
|
||||||
return bool(result)
|
return bin_to_string(public_key, TOX_PUBLIC_KEY_SIZE)
|
||||||
elif tox_err_friend_get_public_key == TOX_ERR_FRIEND_GET_PUBLIC_KEY['FRIEND_NOT_FOUND']:
|
elif tox_err_friend_get_public_key == TOX_ERR_FRIEND_GET_PUBLIC_KEY['FRIEND_NOT_FOUND']:
|
||||||
raise ArgumentError('No friend with the given number exists on the friend list.')
|
raise ArgumentError('No friend with the given number exists on the friend list.')
|
||||||
|
|
||||||
|
@ -902,8 +912,8 @@ class Tox(object):
|
||||||
:return: True on success.
|
:return: True on success.
|
||||||
"""
|
"""
|
||||||
tox_err_set_typing = c_int()
|
tox_err_set_typing = c_int()
|
||||||
result = Tox.libtoxcore.tox_friend_delete(self._tox_pointer, c_uint32(friend_number),
|
result = Tox.libtoxcore.tox_self_set_typing(self._tox_pointer, c_uint32(friend_number),
|
||||||
c_bool(typing), addressof(tox_err_set_typing))
|
c_bool(typing), addressof(tox_err_set_typing))
|
||||||
tox_err_set_typing = tox_err_set_typing.value
|
tox_err_set_typing = tox_err_set_typing.value
|
||||||
if tox_err_set_typing == TOX_ERR_SET_TYPING['OK']:
|
if tox_err_set_typing == TOX_ERR_SET_TYPING['OK']:
|
||||||
return bool(result)
|
return bool(result)
|
||||||
|
@ -1012,7 +1022,7 @@ class Tox(object):
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def hash(hash, data):
|
def hash(data, hash=None):
|
||||||
"""
|
"""
|
||||||
Generates a cryptographic hash of the given data.
|
Generates a cryptographic hash of the given data.
|
||||||
|
|
||||||
|
@ -1027,7 +1037,10 @@ class Tox(object):
|
||||||
:param data: Data to be hashed or NULL.
|
:param data: Data to be hashed or NULL.
|
||||||
:return: true if hash was not NULL.
|
:return: true if hash was not NULL.
|
||||||
"""
|
"""
|
||||||
return bool(Tox.libtoxcore.tox_hash(c_char_p(hash), c_char_p(data), c_size_t(len(data))))
|
if hash is None:
|
||||||
|
hash = create_string_buffer(TOX_HASH_LENGTH)
|
||||||
|
Tox.libtoxcore.tox_hash(hash, c_char_p(data), c_size_t(len(data)))
|
||||||
|
return bin_to_string(hash, TOX_HASH_LENGTH)
|
||||||
|
|
||||||
def file_control(self, friend_number, file_number, control):
|
def file_control(self, friend_number, file_number, control):
|
||||||
"""
|
"""
|
||||||
|
@ -1112,7 +1125,7 @@ class Tox(object):
|
||||||
elif tox_err_file_seek == TOX_ERR_FILE_SEEK['SENDQ']:
|
elif tox_err_file_seek == TOX_ERR_FILE_SEEK['SENDQ']:
|
||||||
raise ArgumentError('Packet queue is full.')
|
raise ArgumentError('Packet queue is full.')
|
||||||
|
|
||||||
def file_get_file_id(self, friend_number, file_number, file_id):
|
def file_get_file_id(self, friend_number, file_number, file_id=None):
|
||||||
"""
|
"""
|
||||||
Copy the file id associated to the file transfer to a byte array.
|
Copy the file id associated to the file transfer to a byte array.
|
||||||
|
|
||||||
|
@ -1120,14 +1133,16 @@ class Tox(object):
|
||||||
:param file_number: The friend-specific identifier for the file transfer.
|
:param file_number: The friend-specific identifier for the file transfer.
|
||||||
:param file_id: A pointer (c_char_p) to memory region of at least TOX_FILE_ID_LENGTH bytes. If this parameter is
|
:param file_id: A pointer (c_char_p) to memory region of at least TOX_FILE_ID_LENGTH bytes. If this parameter is
|
||||||
None, this function has no effect.
|
None, this function has no effect.
|
||||||
:return: True on success.
|
:return: file id.
|
||||||
"""
|
"""
|
||||||
|
if file_id is None:
|
||||||
|
file_id = create_string_buffer(TOX_FILE_ID_LENGTH)
|
||||||
tox_err_file_get = c_int()
|
tox_err_file_get = c_int()
|
||||||
result = Tox.libtoxcore.tox_file_control(self._tox_pointer, c_uint32(friend_number), c_uint32(file_number),
|
Tox.libtoxcore.tox_file_control(self._tox_pointer, c_uint32(friend_number), c_uint32(file_number), file_id,
|
||||||
file_id, addressof(tox_err_file_get))
|
addressof(tox_err_file_get))
|
||||||
tox_err_file_get = tox_err_file_get.value
|
tox_err_file_get = tox_err_file_get.value
|
||||||
if tox_err_file_get == TOX_ERR_FILE_GET['OK']:
|
if tox_err_file_get == TOX_ERR_FILE_GET['OK']:
|
||||||
return bool(result)
|
return bin_to_string(file_id, TOX_FILE_ID_LENGTH)
|
||||||
elif tox_err_file_get == TOX_ERR_FILE_GET['NULL']:
|
elif tox_err_file_get == TOX_ERR_FILE_GET['NULL']:
|
||||||
raise ArgumentError('One of the arguments to the function was NULL when it was not expected.')
|
raise ArgumentError('One of the arguments to the function was NULL when it was not expected.')
|
||||||
elif tox_err_file_get == TOX_ERR_FILE_GET['FRIEND_NOT_FOUND']:
|
elif tox_err_file_get == TOX_ERR_FILE_GET['FRIEND_NOT_FOUND']:
|
||||||
|
@ -1168,7 +1183,7 @@ class Tox(object):
|
||||||
if dht_id is None:
|
if dht_id is None:
|
||||||
dht_id = create_string_buffer(TOX_PUBLIC_KEY_SIZE)
|
dht_id = create_string_buffer(TOX_PUBLIC_KEY_SIZE)
|
||||||
Tox.libtoxcore.tox_self_get_dht_id(self._tox_pointer, dht_id)
|
Tox.libtoxcore.tox_self_get_dht_id(self._tox_pointer, dht_id)
|
||||||
return dht_id
|
return bin_to_string(dht_id, TOX_PUBLIC_KEY_SIZE)
|
||||||
|
|
||||||
def self_get_udp_port(self):
|
def self_get_udp_port(self):
|
||||||
"""
|
"""
|
||||||
|
@ -1198,7 +1213,7 @@ class Tox(object):
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
tox = Tox(Tox.options_new())
|
tox = Tox(Tox.options_new())
|
||||||
p = tox.self_get_connection_status()
|
p = tox.self_get_secret_key()
|
||||||
print type(p)
|
print type(p)
|
||||||
print p
|
print p
|
||||||
del tox
|
del tox
|
||||||
|
|
Loading…
Reference in a new issue