Software / code / prosody-modules
Comparison
mod_rest/README.markdown @ 3802:f88e07630e4e
mod_rest: Add support for simple Bearer token auth
Token specified in config
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 31 Dec 2019 03:37:46 +0100 |
| parent | 3801:d59fb4dcf100 |
| child | 3808:02164f8aebac |
comparison
equal
deleted
inserted
replaced
| 3801:d59fb4dcf100 | 3802:f88e07630e4e |
|---|---|
| 10 Prosody. It can be used to build bots and components implemented as HTTP | 10 Prosody. It can be used to build bots and components implemented as HTTP |
| 11 services. | 11 services. |
| 12 | 12 |
| 13 # Usage | 13 # Usage |
| 14 | 14 |
| 15 Note that there is currently **no authentication**, so be careful with | |
| 16 exposing the API endpoint to the Internet. | |
| 17 | |
| 18 ## Enabling | 15 ## Enabling |
| 19 | 16 |
| 20 ``` {.lua} | 17 ``` {.lua} |
| 21 Component "rest.example.net" "rest" | 18 Component "rest.example.net" "rest" |
| 19 rest_credentials = "Bearer dmVyeSBzZWNyZXQgdG9rZW4K" | |
| 22 ``` | 20 ``` |
| 23 | 21 |
| 24 ## Sending stanzas | 22 ## Sending stanzas |
| 25 | 23 |
| 26 The API endpoint becomes available at the path `/rest`, so the full URL | 24 The API endpoint becomes available at the path `/rest`, so the full URL |
| 28 | 26 |
| 29 To try it, simply `curl` an XML stanza payload: | 27 To try it, simply `curl` an XML stanza payload: |
| 30 | 28 |
| 31 ``` {.sh} | 29 ``` {.sh} |
| 32 curl https://prosody.example:5281/rest \ | 30 curl https://prosody.example:5281/rest \ |
| 31 --oauth2-bearer dmVyeSBzZWNyZXQgdG9rZW4K \ | |
| 33 -H 'Content-Type: application/xmpp+xml' \ | 32 -H 'Content-Type: application/xmpp+xml' \ |
| 34 --data-binary '<message type="chat" to="user@example.org"> | 33 --data-binary '<message type="chat" to="user@example.org"> |
| 35 <body>Hello!</body> | 34 <body>Hello!</body> |
| 36 </body>' | 35 </body>' |
| 37 ``` | 36 ``` |
| 43 A POST containing an `<iq>` stanza automatically wait for the reply, | 42 A POST containing an `<iq>` stanza automatically wait for the reply, |
| 44 long-polling style. | 43 long-polling style. |
| 45 | 44 |
| 46 ``` {.sh} | 45 ``` {.sh} |
| 47 curl https://prosody.example:5281/rest \ | 46 curl https://prosody.example:5281/rest \ |
| 47 --oauth2-bearer dmVyeSBzZWNyZXQgdG9rZW4K \ | |
| 48 -H 'Content-Type: application/xmpp+xml' \ | 48 -H 'Content-Type: application/xmpp+xml' \ |
| 49 --data-binary '<iq type="get" to="example.net"> | 49 --data-binary '<iq type="get" to="example.net"> |
| 50 <ping xmlns="urn:xmpp:ping"/> | 50 <ping xmlns="urn:xmpp:ping"/> |
| 51 </iq>' | 51 </iq>' |
| 52 ``` | 52 ``` |
| 60 | 60 |
| 61 TL;DR: Set this webhook callback URL, get XML `POST`-ed there. | 61 TL;DR: Set this webhook callback URL, get XML `POST`-ed there. |
| 62 | 62 |
| 63 ``` {.lua} | 63 ``` {.lua} |
| 64 Component "rest.example.net" "rest" | 64 Component "rest.example.net" "rest" |
| 65 rest_credentials = "Bearer dmVyeSBzZWNyZXQgdG9rZW4K" | |
| 65 rest_callback_url = "http://my-api.example:9999/stanzas" | 66 rest_callback_url = "http://my-api.example:9999/stanzas" |
| 66 ``` | 67 ``` |
| 67 | 68 |
| 68 Example callback looks like: | 69 Example callback looks like: |
| 69 | 70 |