Mercurial > libervia-backend
comparison doc/jp/pubsub_hook.rst @ 3041:72583524cfd3
doc (jp): jp commands are now fully documented:
rel 232
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 01 Oct 2019 22:49:06 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
3040:fee60f17ebac | 3041:72583524cfd3 |
---|---|
1 .. _jp-pubsub_hook: | |
2 | |
3 ==================================== | |
4 pubsub/hook: PubSub hooks management | |
5 ==================================== | |
6 | |
7 ``hook`` is a subcommands grouping all PubSub commands related to hooks management. Hooks | |
8 are user actions launched on specific events. | |
9 | |
10 3 types of hooks can be used: | |
11 | |
12 ``python`` | |
13 A Python module is expected as argument. The module must be available in Python path, | |
14 and it must have a ``hook`` function. | |
15 | |
16 ``python_file`` | |
17 A path to a Python script is expected as argument. The script must contain a ``hook`` | |
18 function. | |
19 | |
20 ``python_code`` | |
21 Python code which will be directly executed. 3 variables will be set: ``host`` which | |
22 contain the main SàT instance, ``client`` which contain the session attached to the | |
23 profile, and ``item`` which contain the item attached to the event. | |
24 | |
25 .. note:: | |
26 | |
27 Hooks are executed in SàT context, and must be asynchronous. If they block, the whole | |
28 SàT execution will be blocked. They have access to everything, so don't run a code that | |
29 you don't absolutely trust. | |
30 | |
31 .. note:: | |
32 | |
33 Only ``python_file`` type is currently implemented | |
34 | |
35 .. note:: | |
36 Hook is an experimental feature, the way to use it may change in the future. | |
37 | |
38 create | |
39 ====== | |
40 | |
41 Create a hook of given type. Type is specified with ``-t {python,python_file,python_code}, | |
42 --type {python,python_file,python_code}`` and a positional arguments is expected, which | |
43 depends on the chosen type. | |
44 | |
45 By default the hook is temporary (it will be lost if the profile is disconnected), but you | |
46 can make is persistent accross reconnexions if you use the ``-P, --persistent`` argument. | |
47 | |
48 example | |
49 ------- | |
50 | |
51 Install a persistent hook on blog node, using the Python script named | |
52 ``do_something_neat.py`` in ``$HOME`` directory:: | |
53 | |
54 $ jp pubsub node hook create -n urn:xmpp:microblog:0 -t python_file --persistent ~/do_something_neat.py | |
55 | |
56 delete | |
57 ====== | |
58 | |
59 Delete one hook or all of them. To delete a hook, specify its type and argument (the that | |
60 you have used with ``create``). If you use empty ``--type`` and ``--arg`` all hooks will | |
61 be removed. | |
62 | |
63 example | |
64 ------- | |
65 | |
66 Delete the ``do_something_neat.py`` hook:: | |
67 | |
68 $ jp pubsub node hook delete -n urn:xmpp:microblog:0 -t python_file --arg ~/do_something_neat.py | |
69 | |
70 list | |
71 ==== | |
72 | |
73 List registered hooks. The output will give the following informations: | |
74 | |
75 service | |
76 PubSub service on which the hook is attached. | |
77 | |
78 node | |
79 PubSub node on which the hook is attached. | |
80 | |
81 type | |
82 hook type | |
83 | |
84 arg | |
85 hook arguments (dependant of hook type) | |
86 | |
87 persistent | |
88 boolean indicating is the hook persist accross sessions. | |
89 | |
90 example | |
91 ------- | |
92 | |
93 Get PubSub hooks registered for this profile in JSON:: | |
94 | |
95 $ jp pubsub hook list -O json | |
96 |