49 lines
970 B
Plaintext
49 lines
970 B
Plaintext
|
#!/bin/zsh
|
||
|
_DEPENDENCIES+=()
|
||
|
_REQUIRED_ENV+=()
|
||
|
source ${0:a:h}/common.zsh
|
||
|
#####################################################################
|
||
|
|
||
|
CURL_WITH_CACHE() {
|
||
|
[ ! $TTL ] && TTL=10
|
||
|
[[ $CACHE_ENABLED -eq 0 ]] && {
|
||
|
curl $@
|
||
|
return $?
|
||
|
}
|
||
|
|
||
|
local ARGS=()
|
||
|
local URL
|
||
|
|
||
|
while [[ $# -gt 0 ]]
|
||
|
do
|
||
|
case $1 in
|
||
|
-- ) shift 1 ;;
|
||
|
--*= ) ARGS+=($1); shift 1 ;;
|
||
|
--* ) ARGS+=($1 $2); shift 2 ;;
|
||
|
-* ) ARGS+=($1); shift 1 ;;
|
||
|
* ) URL=$1; break ;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
local KEY=$(GET_URL_KEY $URL)
|
||
|
local OUTPUT=$(_REDIS get $KEY 2>&1)
|
||
|
[ $OUTPUT ] && {
|
||
|
[[ ${#ARGS[@]} -gt 0 ]] && __WARN "cache hit found; ignoring arguments ($ARGS)"
|
||
|
echo $OUTPUT
|
||
|
return
|
||
|
}
|
||
|
|
||
|
local OUTPUT=$(curl -s $@)
|
||
|
[ ! $OUTPUT ] && return 1
|
||
|
|
||
|
_REDIS set $KEY "$OUTPUT" >/dev/null
|
||
|
_REDIS expire $KEY $TTL >/dev/null
|
||
|
|
||
|
echo $OUTPUT
|
||
|
}
|
||
|
|
||
|
GET_URL_KEY() { echo "scwrypts:curl:$1" | sed 's/\s\+/+/g'; }
|
||
|
|
||
|
#####################################################################
|
||
|
CURL_WITH_CACHE $@
|