summaryrefslogtreecommitdiffstats
path: root/cython/installation_proxy.pxi
diff options
context:
space:
mode:
Diffstat (limited to 'cython/installation_proxy.pxi')
-rw-r--r--cython/installation_proxy.pxi31
1 files changed, 25 insertions, 6 deletions
diff --git a/cython/installation_proxy.pxi b/cython/installation_proxy.pxi
index 3dfb0b1..1d3e323 100644
--- a/cython/installation_proxy.pxi
+++ b/cython/installation_proxy.pxi
@@ -2,7 +2,7 @@ cdef extern from "libimobiledevice/installation_proxy.h":
cdef struct instproxy_client_private:
pass
ctypedef instproxy_client_private *instproxy_client_t
- ctypedef void (*instproxy_status_cb_t) (const_char_ptr operation, plist.plist_t status, void *user_data)
+ ctypedef void (*instproxy_status_cb_t) (plist.plist_t command, plist.plist_t status, void *user_data)
ctypedef enum instproxy_error_t:
INSTPROXY_E_SUCCESS = 0
@@ -13,8 +13,9 @@ cdef extern from "libimobiledevice/installation_proxy.h":
INSTPROXY_E_OP_FAILED = -5
INSTPROXY_E_UNKNOWN_ERROR = -256
- instproxy_error_t instproxy_client_new(idevice_t device, uint16_t port, instproxy_client_t *client)
+ instproxy_error_t instproxy_client_new(idevice_t device, lockdownd_service_descriptor_t descriptor, instproxy_client_t *client)
instproxy_error_t instproxy_client_free(instproxy_client_t client)
+ instproxy_error_t instproxy_client_get_path_for_bundle_identifier(instproxy_client_t client, const char* bundle_id, char** path)
instproxy_error_t instproxy_browse(instproxy_client_t client, plist.plist_t client_options, plist.plist_t *result)
instproxy_error_t instproxy_install(instproxy_client_t client, char *pkg_path, plist.plist_t client_options, instproxy_status_cb_t status_cb, void *user_data)
@@ -26,8 +27,8 @@ cdef extern from "libimobiledevice/installation_proxy.h":
instproxy_error_t instproxy_restore(instproxy_client_t client, char *appid, plist.plist_t client_options, instproxy_status_cb_t status_cb, void *user_data)
instproxy_error_t instproxy_remove_archive(instproxy_client_t client, char *appid, plist.plist_t client_options, instproxy_status_cb_t status_cb, void *user_data)
-cdef void instproxy_notify_cb(const_char_ptr operation, plist.plist_t status, void *py_callback) with gil:
- (<object>py_callback)(operation, plist.plist_t_to_node(status, False))
+cdef void instproxy_notify_cb(plist.plist_t command, plist.plist_t status, void *py_callback) noexcept:
+ (<object>py_callback)(plist.plist_t_to_node(command, False), plist.plist_t_to_node(status, False))
cdef class InstallationProxyError(BaseError):
def __init__(self, *args, **kwargs):
@@ -46,11 +47,11 @@ cdef class InstallationProxyClient(PropertyListService):
__service_name__ = "com.apple.mobile.installation_proxy"
cdef instproxy_client_t _c_client
- def __cinit__(self, iDevice device not None, int port, *args, **kwargs):
+ def __cinit__(self, iDevice device not None, LockdownServiceDescriptor descriptor, *args, **kwargs):
cdef:
iDevice dev = device
instproxy_error_t err
- err = instproxy_client_new(dev._c_dev, port, &self._c_client)
+ err = instproxy_client_new(dev._c_dev, descriptor._c_service_descriptor, &self._c_client)
self.handle_error(err)
def __dealloc__(self):
@@ -59,6 +60,24 @@ cdef class InstallationProxyClient(PropertyListService):
err = instproxy_client_free(self._c_client)
self.handle_error(err)
+ cpdef get_path_for_bundle_identifier(self, bytes bundle_id):
+ cdef:
+ char* c_bundle_id = bundle_id
+ char* c_path = NULL
+ bytes result
+
+ try:
+ self.handle_error(instproxy_client_get_path_for_bundle_identifier(self._c_client, c_bundle_id, &c_path))
+ if c_path != NULL:
+ result = c_path
+ return result
+ else:
+ return None
+ except BaseError, e:
+ raise
+ finally:
+ free(c_path)
+
cpdef plist.Node browse(self, object client_options):
cdef:
plist.Node options