Mercurial > prosody-modules
view mod_data_access/README.markdown @ 4326:f6fdefc5c6ac
mod_roster_command: Fix subscription when the "user JID" is a bare domain.
Do not attempt to update the roster when the user is bare domain (e.g. a
component), since they don't have rosters and the attempt results in an error:
$ prosodyctl mod_roster_command subscribe proxy.example.com contact@example.com
xxxxxxxxxxFailed to execute command: Error: /usr/lib/prosody/core/rostermanager.lua:104: attempt to concatenate local 'username' (a nil value)
stack traceback:
/usr/lib/prosody/core/rostermanager.lua:104: in function 'load_roster'
/usr/lib/prosody/core/rostermanager.lua:305: in function 'set_contact_pending_out'
mod_roster_command.lua:44: in function 'subscribe'
author | Boris Grozev <boris@jitsi.org> |
---|---|
date | Tue, 05 Jan 2021 13:15:00 -0600 |
parents | 4d73a1a6ba68 |
children | 34fb3d239ac1 |
line wrap: on
line source
--- 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.