Defined get_procedures() method on inspect plugin

This commit is contained in:
Fabio Manganiello 2020-06-17 22:31:04 +02:00
parent fb58c89911
commit a1c20a52da
1 changed files with 18 additions and 0 deletions

View File

@ -11,6 +11,7 @@ import platypush.message.event
import platypush.message.response import platypush.message.response
from platypush.backend import Backend from platypush.backend import Backend
from platypush.config import Config
from platypush.plugins import Plugin, action from platypush.plugins import Plugin, action
from platypush.message.event import Event from platypush.message.event import Event
from platypush.message.response import Response from platypush.message.response import Response
@ -36,6 +37,16 @@ class Model:
return docutils.core.publish_parts(doc, writer_name='html')['html_body'] return docutils.core.publish_parts(doc, writer_name='html')['html_body']
class ProcedureEncoder(json.JSONEncoder):
def default(self, o):
if callable(o):
return {
'type': 'native_function',
}
return super().default(o)
class BackendModel(Model): class BackendModel(Model):
def __init__(self, backend, prefix='', html_doc: bool = False): def __init__(self, backend, prefix='', html_doc: bool = False):
self.name = backend.__module__[len(prefix):] self.name = backend.__module__[len(prefix):]
@ -321,5 +332,12 @@ class InspectPlugin(Plugin):
for package, events in self._responses.items() for package, events in self._responses.items()
}) })
@action
def get_procedures(self) -> dict:
"""
Get the list of procedures installed on the device.
"""
return json.loads(json.dumps(Config.get_procedures(), cls=ProcedureEncoder))
# vim:sw=4:ts=4:et: # vim:sw=4:ts=4:et: