Mercurial > prosody-modules
annotate mod_rest/example/rest.sh @ 5958:5f8a306c8306
mod_http_oauth2: Require a stringprepped host part of URLs
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 31 Aug 2024 13:30:55 +0200 |
parents | a9c75430cb26 |
children |
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/ |
5636
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 |
5637
acd2f397ce6b
mod_rest/rest.sh: Silence shellcheck SC1091
Kim Alvefur <zash@zash.se>
parents:
5636
diff
changeset
|
10 # shellcheck disable=SC1091 |
acd2f397ce6b
mod_rest/rest.sh: Silence shellcheck SC1091
Kim Alvefur <zash@zash.se>
parents:
5636
diff
changeset
|
11 |
5936
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
12 SELF="${0##*/}" |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
13 function usage() { |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
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:
5666
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:
5666
diff
changeset
|
16 } |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
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="" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 |
5666
e5ad3f1f48bd
mod_rest/rest.sh: Restore default read-only behavior and the -rw flag
Kim Alvefur <zash@zash.se>
parents:
5637
diff
changeset
|
22 SESSION="session-read-only" |
e5ad3f1f48bd
mod_rest/rest.sh: Restore default read-only behavior and the -rw flag
Kim Alvefur <zash@zash.se>
parents:
5637
diff
changeset
|
23 |
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 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
|
25 # 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
|
26 source "${XDG_CONFIG_HOME:-$HOME/.config}/restrc" |
5636
b3484a112300
mod_rest/rest.sh: Update to use httpie-oauth2 plugin
Kim Alvefur <zash@zash.se>
parents:
5432
diff
changeset
|
27 |
b3484a112300
mod_rest/rest.sh: Update to use httpie-oauth2 plugin
Kim Alvefur <zash@zash.se>
parents:
5432
diff
changeset
|
28 if [ -z "${SCOPE:-}" ]; then |
b3484a112300
mod_rest/rest.sh: Update to use httpie-oauth2 plugin
Kim Alvefur <zash@zash.se>
parents:
5432
diff
changeset
|
29 SCOPE="openid xmpp" |
b3484a112300
mod_rest/rest.sh: Update to use httpie-oauth2 plugin
Kim Alvefur <zash@zash.se>
parents:
5432
diff
changeset
|
30 fi |
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 fi |
5432
1c52efb6fd42
mod_rest/rest.sh: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
5431
diff
changeset
|
32 |
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 if [[ $# == 0 ]]; then |
5936
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
34 usage |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
35 exit 1 |
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 fi |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 |
5936
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
38 while getopts 'r:h:' flag; do |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
39 case "$flag" in |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
40 r) |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
41 case "$OPTARG" in |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
42 o) |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
43 # Default |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
44 SESSION="session-read-only" |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
45 ;; |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
46 w) |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
47 # 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:
5666
diff
changeset
|
48 SESSION="session" |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
49 ;; |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
50 *) |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
51 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:
5666
diff
changeset
|
52 exit 1 |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
53 ;; |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
54 esac |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
55 ;; |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
56 h) |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
57 HOST="$OPTARG" |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
58 ;; |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
59 *) |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
60 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:
5666
diff
changeset
|
61 usage >&2 |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
62 exit 1 |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
63 esac |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
64 done |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
65 shift $((OPTIND-1)) |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
66 |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
67 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
|
68 HOST="$(hostname)" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
69 fi |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
70 |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
71 if [[ "$HOST" != *.* ]]; then |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
72 # 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
|
73 if [ -z "${DOMAIN:-}" ]; then |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
74 DOMAIN="$(hostname -d)" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
75 fi |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
76 if [[ "$HOST" == *:* ]]; then |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
77 HOST="${HOST%:*}.$DOMAIN:${HOST#*:}" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
78 else |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
79 HOST="$HOST.$DOMAIN" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
80 fi |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
81 fi |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
82 |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
83 |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
84 # 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
|
85 GET_PATH="" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
86 if [[ "$1" == /* ]]; then |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
87 GET_PATH="$1" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
88 shift 1 |
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 |
5666
e5ad3f1f48bd
mod_rest/rest.sh: Restore default read-only behavior and the -rw flag
Kim Alvefur <zash@zash.se>
parents:
5637
diff
changeset
|
91 https --check-status -p b --"$SESSION" rest -A oauth2 -a "$HOST" --oauth2-scope "$SCOPE" "$HOST/rest$GET_PATH" "$@" |