yunohost/data/helpers.d/utils
Maniack Crudelis 712e69d830 New helper ynh_local_curl (#288)
* New helper ynh_curl_abstract
Just an abstraction around curl command.
To prevent forgot arguments and simplify this difficult command.
* [enh] Switch args of ynh_curl_abstract
* [enh] Rename ynh_curl_abstract into ynh_local_curl
* Splitting the various key=value into several arguments
* Comment to clarify bash command
* Adding comment about $domain and $path_url
2017-04-06 15:33:56 +02:00

54 lines
1.7 KiB
Text

# Extract a key from a plain command output
#
# example: yunohost user info tata --output-as plain | ynh_get_plain_key mail
#
# usage: ynh_get_plain_key key [subkey [subsubkey ...]]
# | ret: string - the key's value
ynh_get_plain_key() {
prefix="#"
founded=0
key=$1
shift
while read line; do
if [[ "$founded" == "1" ]] ; then
[[ "$line" =~ ^${prefix}[^#] ]] && return
echo $line
elif [[ "$line" =~ ^${prefix}${key}$ ]]; then
if [[ -n "${1:-}" ]]; then
prefix+="#"
key=$1
shift
else
founded=1
fi
fi
done
}
# Curl abstraction to help with POST requests to local pages (such as installation forms)
#
# $domain and $path_url should be defined externally (and correspond to the domain.tld and the /path (of the app?))
#
# example: ynh_local_curl "/install.php?installButton" "foo=$var1" "bar=$var2"
#
# usage: ynh_local_curl "page_uri" "key1=value1" "key2=value2" ...
# | arg: page_uri - Path (relative to $path_url) of the page where POST data will be sent
# | arg: key1=value1 - (Optionnal) POST key and corresponding value
# | arg: key2=value2 - (Optionnal) Another POST key and corresponding value
# | arg: ... - (Optionnal) More POST keys and values
ynh_local_curl () {
# Define url of page to curl
full_page_url=https://localhost$path_url$1
# Concatenate all other arguments with '&' to prepare POST data
POST_data=""
for arg in "${@:2}"
do
POST_data="${POST_data}${arg}&"
done
# (Remove the last character, which is an unecessary '&')
POST_data=${POST_data::-1}
# Curl the URL
curl -kL -H "Host: $domain" --resolve $domain:443:127.0.0.1 --data "$POST_data" "$full_page_url" 2>&1
}