pubsub/hook: PubSub hooks management¶
hook
is a subcommand grouping all PubSub commands related to hooks management. Hooks
are user actions launched on specific events.
3 types of hooks can be used:
python
A Python module is expected as argument. The module must be available in Python path, and it must have a
hook
function.python_file
A path to a Python script is expected as argument. The script must contain a
hook
function.python_code
Python code which will be directly executed. 3 variables will be set:
host
which contain the main Libervia instance,client
which contain the session attached to the profile, anditem
which contain the item attached to the event.
Note
Hooks are executed in Libervia context, and must be asynchronous. If they block, the whole Libervia execution will be blocked. They have access to everything, so don’t run a code that you don’t absolutely trust.
Note
Only python_file
type is currently implemented
Note
Hook is an experimental feature, the way to use it may change in the future.
create¶
Create a hook of given type. Type is specified with -t {python,python_file,python_code},
--type {python,python_file,python_code}
and a positional arguments is expected, which
depends on the chosen type.
By default the hook is temporary (it will be lost if the profile is disconnected), but you
can make is persistent accross reconnexions if you use the -P, --persistent
argument.
example¶
Install a persistent hook on blog node, using the Python script named
do_something_neat.py
in $HOME
directory:
$ li pubsub node hook create -n urn:xmpp:microblog:0 -t python_file --persistent ~/do_something_neat.py
delete¶
Delete one hook or all of them. To delete a hook, specify its type and argument (the that
you have used with create
). If you use empty --type
and --arg
all hooks will
be removed.
example¶
Delete the do_something_neat.py
hook:
$ li pubsub node hook delete -n urn:xmpp:microblog:0 -t python_file --arg ~/do_something_neat.py
list¶
List registered hooks. The output will give the following informations:
- service
PubSub service on which the hook is attached.
- node
PubSub node on which the hook is attached.
- type
hook type
- arg
hook arguments (dependant of hook type)
- persistent
boolean indicating is the hook persist accross sessions.
example¶
Get PubSub hooks registered for this profile in JSON:
$ li pubsub hook list -O json