core: added imageCheck and imageResize methods:

imageCheck will give a report on image, notably it will tell if it's too big and needs to
be resized before a transfer.

imageResize will create a new image with the requested size and return a path to it.
This commit is contained in:
Goffi 2019-10-29 20:38:39 +01:00
commit 93a4e488ea
2 changed files with 197 additions and 0 deletions

View file

@ -469,6 +469,29 @@ class Bridge:
error_handler = lambda err:errback(dbus_to_bridge_exception(err))
return self.db_core_iface.historyGet(from_jid, to_jid, limit, between, filters, profile, timeout=const_TIMEOUT, reply_handler=callback, error_handler=error_handler)
def imageCheck(self, arg_0, callback=None, errback=None):
if callback is None:
error_handler = None
else:
if errback is None:
errback = log.error
error_handler = lambda err:errback(dbus_to_bridge_exception(err))
kwargs={}
if callback is not None:
kwargs['timeout'] = const_TIMEOUT
kwargs['reply_handler'] = callback
kwargs['error_handler'] = error_handler
return str(self.db_core_iface.imageCheck(arg_0, **kwargs))
def imageResize(self, image_path, width, height, callback=None, errback=None):
if callback is None:
error_handler = None
else:
if errback is None:
errback = log.error
error_handler = lambda err:errback(dbus_to_bridge_exception(err))
return str(self.db_core_iface.imageResize(image_path, width, height, timeout=const_TIMEOUT, reply_handler=callback, error_handler=error_handler))
def isConnected(self, profile_key="@DEFAULT@", callback=None, errback=None):
if callback is None:
error_handler = None
@ -1085,6 +1108,22 @@ class AIOBridge(Bridge):
self.db_core_iface.historyGet(from_jid, to_jid, limit, between, filters, profile, timeout=const_TIMEOUT, reply_handler=reply_handler, error_handler=error_handler)
return fut
def imageCheck(self, arg_0):
loop = asyncio.get_running_loop()
fut = loop.create_future()
reply_handler = lambda ret=None: loop.call_soon_threadsafe(fut.set_result, ret)
error_handler = lambda err: loop.call_soon_threadsafe(fut.set_exception, dbus_to_bridge_exception(err))
self.db_core_iface.imageCheck(arg_0, timeout=const_TIMEOUT, reply_handler=reply_handler, error_handler=error_handler)
return fut
def imageResize(self, image_path, width, height):
loop = asyncio.get_running_loop()
fut = loop.create_future()
reply_handler = lambda ret=None: loop.call_soon_threadsafe(fut.set_result, ret)
error_handler = lambda err: loop.call_soon_threadsafe(fut.set_exception, dbus_to_bridge_exception(err))
self.db_core_iface.imageResize(image_path, width, height, timeout=const_TIMEOUT, reply_handler=reply_handler, error_handler=error_handler)
return fut
def isConnected(self, profile_key="@DEFAULT@"):
loop = asyncio.get_running_loop()
fut = loop.create_future()

View file

@ -375,6 +375,22 @@ class Bridge(object):
errback = self._generic_errback
d.addErrback(errback)
def imageCheck(self, arg_0, callback=None, errback=None):
d = self.root.callRemote("imageCheck", arg_0)
if callback is not None:
d.addCallback(callback)
if errback is None:
errback = self._generic_errback
d.addErrback(errback)
def imageResize(self, image_path, width, height, callback=None, errback=None):
d = self.root.callRemote("imageResize", image_path, width, height)
if callback is not None:
d.addCallback(callback)
if errback is None:
errback = self._generic_errback
d.addErrback(errback)
def isConnected(self, profile_key="@DEFAULT@", callback=None, errback=None):
d = self.root.callRemote("isConnected", profile_key)
if callback is not None:
@ -773,6 +789,16 @@ class AIOBridge(Bridge):
d.addErrback(self._errback)
return d.asFuture(asyncio.get_event_loop())
def imageCheck(self, arg_0):
d = self.root.callRemote("imageCheck", arg_0)
d.addErrback(self._errback)
return d.asFuture(asyncio.get_event_loop())
def imageResize(self, image_path, width, height):
d = self.root.callRemote("imageResize", image_path, width, height)
d.addErrback(self._errback)
return d.asFuture(asyncio.get_event_loop())
def isConnected(self, profile_key="@DEFAULT@"):
d = self.root.callRemote("isConnected", profile_key)
d.addErrback(self._errback)