much cleaner API interaction
This commit is contained in:
parent
43dc548a3d
commit
2d89225840
82
functions.sh
82
functions.sh
@ -1,12 +1,88 @@
|
||||
#######################################
|
||||
# Print error message
|
||||
#
|
||||
# Arguments:
|
||||
# Error message
|
||||
#######################################
|
||||
miria_error() {
|
||||
echo "error: $1" 1>&2
|
||||
echo "[miria-cli] error: $1" 1>&2
|
||||
}
|
||||
|
||||
#######################################
|
||||
# Get Mira API URL
|
||||
#
|
||||
# Arguments:
|
||||
# None
|
||||
#######################################
|
||||
miria_get_url() {
|
||||
if [ -e ~/.miria-url ]; then
|
||||
miria_url="$(cat ~/.miria-url)"
|
||||
else
|
||||
echo 'error: file ~/.miria-url not found' 1>&2
|
||||
miria_error 'file ~/.miria-url not found'
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
}
|
||||
|
||||
#######################################
|
||||
# Execute Mira API command
|
||||
#
|
||||
# Arguments:
|
||||
# API command,
|
||||
# command argument 1 (key=value),
|
||||
# ...
|
||||
# command argument n (key=value)
|
||||
# Outputs:
|
||||
# miria_last_xml : last XML answer
|
||||
# miria_last_status : last return code
|
||||
# miria_last_error : last error message
|
||||
#######################################
|
||||
miria_api_cmd() {
|
||||
local url_args=()
|
||||
local cmd="$1"
|
||||
|
||||
miria_get_url
|
||||
shift
|
||||
for a in "$@"; do
|
||||
url_args+=('--data-urlencode')
|
||||
url_args+=("${a}")
|
||||
done
|
||||
miria_last_xml="$(curl -sG "${url_args[@]}" "${miria_url}/${cmd}")"
|
||||
miria_last_status="$(miria_xml_get_attribute "${miria_last_xml}" '//ReturnCode' 'ADARetCode')"
|
||||
miria_last_error="$(miria_xml_get_string "${miria_last_xml}" '//ErrorMsg')"
|
||||
if [[ "${miria_last_status}" != "1" ]]; then
|
||||
miria_error "Miria API call returned status ${miria_last_status}"
|
||||
miria_error "${miria_last_error}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
#######################################
|
||||
# Get XML string(s)
|
||||
#
|
||||
# Arguments:
|
||||
# XML data (in string form),
|
||||
# XPath of string
|
||||
#######################################
|
||||
miria_xml_get_string() {
|
||||
local xml="$1"
|
||||
local xpath="$2"
|
||||
|
||||
echo "${xml}" | xmllint --xpath "string(${xpath})" -
|
||||
}
|
||||
|
||||
#######################################
|
||||
# Get XML attribute value(s)
|
||||
#
|
||||
# Arguments:
|
||||
# XML data (in string form),
|
||||
# XPath of attribute (without @attribute)
|
||||
# Attribute name
|
||||
#######################################
|
||||
miria_xml_get_attribute() {
|
||||
local xml="$1"
|
||||
local xpath="$2"
|
||||
local attr="$3"
|
||||
|
||||
echo "${xml}" | xmllint --xpath "${xpath}/@${attr}" - \
|
||||
| sed -E "s/ *${attr}=\"(.+)\"/\1/g"
|
||||
}
|
||||
|
13
miria-find
13
miria-find
@ -37,19 +37,16 @@ if [[ -z "${pattern}" ]]; then
|
||||
print_usage
|
||||
exit 1
|
||||
fi
|
||||
tmp_xml="$(mktemp)"
|
||||
base="$(basename "${pattern}")"
|
||||
dir="$(dirname "${pattern}")"
|
||||
if [[ "${dir}" == "." ]]; then
|
||||
dir=''
|
||||
fi
|
||||
curl -s "${miria_url}/fileSearch?filename=${base}&path=${project}@/${dir}" > ${tmp_xml}
|
||||
miria_api_cmd fileSearch "filename=${base}" "path=${project}@/${dir}"
|
||||
if [[ "${xml}" == "true" ]]; then
|
||||
cat ${tmp_xml}
|
||||
echo "${miria_last_xml}"
|
||||
else
|
||||
xmllint --xpath '//file/@name' ${tmp_xml} \
|
||||
| sed -E 's/ *name="(.+)"/\1/g' \
|
||||
| sed -E "s/archive@${project}://g" \
|
||||
| sed -E 's/\/\//\//g'
|
||||
miria_xml_get_attribute "${miria_last_xml}" '//file' 'name' \
|
||||
| sed -E "s/archive@${project}://g" \
|
||||
| sed -E 's/\/\//\//g'
|
||||
fi
|
||||
rm -f ${tmp_xml}
|
||||
|
Loading…
x
Reference in New Issue
Block a user