24
1
mirror of https://github.com/processone/ejabberd.git synced 2024-07-02 23:06:21 +02:00
xmpp.chapril.org-ejabberd/doc/http_post.md

80 lines
2.2 KiB
Markdown
Raw Normal View History

# Managing pubsub nodes through HTTP Atompub #
## Configuration ##
These options will be used by the service to know how to build URLs. Using the previous configuration items the service should be accessed through `http://notify.push.bbc.co.uk:5280/pshb/<host>/<node>/`.
Also, in the ejabberd_http handler configuration, add the identified line.
{5280, ejabberd_http, [
http_poll,
web_admin,
{request_handlers, [{["pshb"], pshb_http}]} % this should be added
]}
## Important notice ##
In the current version of the code, some security checks are not done :
* read operations can all be done without authentication
* node creation uses the default `all` access_createnode acl, not checking for the actual configuration.
## Usage example with cURL ##
### Getting the service document ###
No authentication necessary. All nodes are listed.
curl -i http://host:port/pshb/domain/
### Getting items from a node ###
No authentication done, and all nodes are accessible.
curl -i http://host:port/pshb/domain/node/
### Posting a new item ###
curl -u jid:password -i -X POST -d @entry.atom http://post:port/pshb/domain/node
User ability to post is based on node configuration.
### Creating a new node ###
An instant node can be created if server configuration allows:
curl -X POST -u cstar@localhost:encore -d "" http://localhost:5280/pshb/localhost
or
curl -X POST -u cstar@localhost:encore -d "<pubsub><create node='princely_musings'/></pubsub>" http://localhost:5280/pshb/localhost
configure element (as per XEP-60) can be passed in the pubsub body.
$ cat createnode.xml
<pubsub><create node='princely_musings' type='flat'/>
<x xmlns='jabber:x:data' type='submit'>
<field var='FORM_TYPE' type='hidden'>
<value>http://jabber.org/protocol/pubsub#node_config</value>
</field>
<field var='pubsub#title'><value>Princely Musings (Atom)</value></field>
<field var='pubsub#max_payload_size'><value>1028</value></field>
<field var='pubsub#type'><value>Atom</value></field>
</x>
</pubsub>
$ curl -X POST -u cstar@localhost:encore -d @createnode.xml http://localhost:5280/pshb/localhost
### Deleting a node ###
A node is deleted by:
curl -X DELETE -u cstar@localhost:encore http://localhost:5280/pshb/localhost/princely_musings