Software / code / prosody-modules
Annotate
mod_rest/example/rest.sh @ 6336:6e80b2cb5fe6
mod_http_oauth2: Show scope descriptions
This should help the user understand and provide _informed_ consent,
although the texts can certainly be improved. Explaining these scopes is
non-trivial.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 15 Jul 2025 16:28:40 +0200 |
| parent | 6329:c95dffd984a4 |
| rev | line source |
|---|---|
|
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 #!/bin/bash -eu |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 # Copyright (c) Kim Alvefur |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 # This file is MIT/X11 licensed. |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 |
|
5329
107d60c70c1a
mod_rest/rest.sh: List dependencies in comment
Kim Alvefur <zash@zash.se>
parents:
5281
diff
changeset
|
6 # Dependencies: |
|
107d60c70c1a
mod_rest/rest.sh: List dependencies in comment
Kim Alvefur <zash@zash.se>
parents:
5281
diff
changeset
|
7 # - https://httpie.io/ |
|
5654
b3484a112300
mod_rest/rest.sh: Update to use httpie-oauth2 plugin
Kim Alvefur <zash@zash.se>
parents:
5432
diff
changeset
|
8 # - https://hg.sr.ht/~zash/httpie-oauth2 |
|
5329
107d60c70c1a
mod_rest/rest.sh: List dependencies in comment
Kim Alvefur <zash@zash.se>
parents:
5281
diff
changeset
|
9 |
|
5655
acd2f397ce6b
mod_rest/rest.sh: Silence shellcheck SC1091
Kim Alvefur <zash@zash.se>
parents:
5654
diff
changeset
|
10 # shellcheck disable=SC1091 |
|
acd2f397ce6b
mod_rest/rest.sh: Silence shellcheck SC1091
Kim Alvefur <zash@zash.se>
parents:
5654
diff
changeset
|
11 |
|
5964
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
12 SELF="${0##*/}" |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
13 function usage() { |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
14 echo "${SELF} [-h HOST] [-rw] [/path] kind=(message|presence|iq) ...." |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
15 # Last arguments are handed to HTTPie, so refer to its docs for further details |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
16 } |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
17 |
|
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 # Settings |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 HOST="" |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 DOMAIN="" |
|
6329
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
21 PRINT="b" |
|
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 |
|
5689
e5ad3f1f48bd
mod_rest/rest.sh: Restore default read-only behavior and the -rw flag
Kim Alvefur <zash@zash.se>
parents:
5655
diff
changeset
|
23 SESSION="session-read-only" |
|
e5ad3f1f48bd
mod_rest/rest.sh: Restore default read-only behavior and the -rw flag
Kim Alvefur <zash@zash.se>
parents:
5655
diff
changeset
|
24 |
|
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/restrc" ]; then |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 # Config file can contain the above settings |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 source "${XDG_CONFIG_HOME:-$HOME/.config}/restrc" |
|
5654
b3484a112300
mod_rest/rest.sh: Update to use httpie-oauth2 plugin
Kim Alvefur <zash@zash.se>
parents:
5432
diff
changeset
|
28 |
|
b3484a112300
mod_rest/rest.sh: Update to use httpie-oauth2 plugin
Kim Alvefur <zash@zash.se>
parents:
5432
diff
changeset
|
29 if [ -z "${SCOPE:-}" ]; then |
|
6328
887ed0f6e275
mod_rest: Update example script to get refresh tokens from mod_http_oauth2
Kim Alvefur <zash@zash.se>
parents:
5964
diff
changeset
|
30 SCOPE="openid offline_access xmpp" |
|
5654
b3484a112300
mod_rest/rest.sh: Update to use httpie-oauth2 plugin
Kim Alvefur <zash@zash.se>
parents:
5432
diff
changeset
|
31 fi |
|
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 fi |
|
5432
1c52efb6fd42
mod_rest/rest.sh: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
5431
diff
changeset
|
33 |
|
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 if [[ $# == 0 ]]; then |
|
5964
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
35 usage |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
36 exit 1 |
|
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 fi |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 |
|
6329
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
39 while getopts 'vr:h:' flag; do |
|
5964
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
40 case "$flag" in |
|
6329
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
41 v) |
|
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
42 case "$PRINT" in |
|
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
43 b) |
|
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
44 PRINT="Bb" |
|
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
45 ;; |
|
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
46 Bb) |
|
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
47 PRINT="HBhb" |
|
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
48 ;; |
|
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
49 HBhb) |
|
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
50 PRINT="HBhbm" |
|
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
51 ;; |
|
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
52 esac |
|
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
53 ;; |
|
5964
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
54 r) |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
55 case "$OPTARG" in |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
56 o) |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
57 # Default |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
58 SESSION="session-read-only" |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
59 ;; |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
60 w) |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
61 # To e.g. save Accept headers to the session |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
62 SESSION="session" |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
63 ;; |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
64 *) |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
65 echo "E: -ro OR -rw" >&2 |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
66 exit 1 |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
67 ;; |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
68 esac |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
69 ;; |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
70 h) |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
71 HOST="$OPTARG" |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
72 ;; |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
73 *) |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
74 echo "E: Unknown flag '$flag'" >&2 |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
75 usage >&2 |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
76 exit 1 |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
77 esac |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
78 done |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
79 shift $((OPTIND-1)) |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
80 |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
81 if [ -z "${HOST:-}" ]; then |
|
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
82 HOST="$(hostname)" |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
83 fi |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
84 |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
85 if [[ "$HOST" != *.* ]]; then |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
86 # Assumes subdomain of your DOMAIN |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
87 if [ -z "${DOMAIN:-}" ]; then |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
88 DOMAIN="$(hostname -d)" |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
89 fi |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
90 if [[ "$HOST" == *:* ]]; then |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
91 HOST="${HOST%:*}.$DOMAIN:${HOST#*:}" |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
92 else |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
93 HOST="$HOST.$DOMAIN" |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
94 fi |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
95 fi |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
96 |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
97 |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
98 # For e.g /disco/example.com and such GET queries |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
99 GET_PATH="" |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
100 if [[ "$1" == /* ]]; then |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
101 GET_PATH="$1" |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
102 shift 1 |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
103 fi |
|
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
104 |
|
6329
c95dffd984a4
mod_rest: Add -v flag to example script to allow increasing verbosity
Kim Alvefur <zash@zash.se>
parents:
6328
diff
changeset
|
105 https --check-status -p "$PRINT" --"$SESSION" rest -A oauth2 -a "$HOST" --oauth2-scope "$SCOPE" "$HOST/rest$GET_PATH" "$@" |