#!/usr/bin/env bash set -e base_url="http://localhost:8080" base_dir="/opt/mdqp/work/signed_metadata" tmpfile=$(mktemp /tmp/"$(basename "$0")".XXXXXX) for expression in "role-sp" "role-idp" "index.html"; do echo "Fetching up ${expression}" case $expression in role-sp) url="role/sp.xml" file="/role/sp.xml" ;; role-idp) url="role/idp.xml" file="/role/idp.xml" ;; index.html) url="entities/" file="/entities/index.html" ;; *) echo "Unsupported expression ${expression}" exit 1 ;; esac curl ${base_url}/${url} -o "${tmpfile}" case $file in *.json) jq -e .[].entityID "${tmpfile}" 1> /dev/null ;; *.xml|*.html) xmlstarlet sel -t -v "//md:EntityDescriptor/@entityID" -n -m "//*[local-name()='EntityDescriptor']" -v "@entityID" -n "${tmpfile}" 1>/dev/null ;; *) echo "Unsupported file type (${file}))" exit 1 ;; esac full_path=${base_dir}${file} mkdir -p "$(dirname ${full_path})" mv "${tmpfile}" "${full_path}" done