Software /
code /
prosody-modules
Diff
mod_data_access/README.markdown @ 1803:4d73a1a6ba68
Convert all wiki pages to Markdown
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 28 Aug 2015 18:03:58 +0200 |
child | 5007:34fb3d239ac1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_data_access/README.markdown Fri Aug 28 18:03:58 2015 +0200 @@ -0,0 +1,74 @@ +--- +labels: +summary: 'HTTP access to prosody’s storage mechanism' +... + +Introduction +------------ + +This module gives HTTP access to prosody’s storage mechanism. It uses +normal HTTP verbs and [Basic HTTP +authentication](http://tools.ietf.org/html/rfc2617), so you could call +it RESTful if you like buzzwords. + +Syntax +------ + +To Fetch data, issue a normal GET request + + GET /data[/<host>/<user>]/<store>[/<format>] HTTP/1.1 + Authorization: <base64(authzid:password)> + +OR + + PUT|POST /data[/<host>/<user>]/<store> HTTP/1.1 + Content-Type: text/x-lua | application/json + + <data> + +These map to `datamanager.method(user, host, store, data)`, where choice +of `method` and its parameters are explained below. + +### Verbs + + Verb Meaning datamanager method + -------- ------------------------------- --------------------------- + `GET` Just fetch data `load()` or `list_load()` + `PUT` Replace all data in the store `store()` + `POST` Append item to the store `list_append()` + +Note: In a `GET` request, if `load()` returns `nil`, `list_load()` will +be tried instead. + +### Fields + + Field Description Default + ---------- ----------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------- + `host` Which virtual host to access Required. If not set in the path, the domain-part of the authzid is used. + `user` Which users storage to access Required. If not set in the path, uses the node part of the authzid. + `store` Which storage to access. Required. + `format` Which format to serialize to. `json` and `lua` are supported. When uploading data, the `Content-Type` header is used. `json` + `data` The actual data to upload in a `PUT` or `POST` request. `nil` + +Note: Only admins can change data for users other than themselves. + +### Example usage + +Here follows some example usage using `curl`. + +Get your account details: + + curl http://prosody.local:5280/data/accounts -u user@example.com:secr1t + {"password":"secr1t"} + +Set someones account details: + + curl -X PUT http://prosody.local:5280/data/example.com/user/accounts -u admin@host:r00tp4ssw0rd --header 'Content-Type: application/json' --data-binary '{"password":"changeme"}' + +### Client library + +- https://metacpan.org/module/Prosody::Mod::Data::Access + +### TODO + +- Use `Accept` header.