Files
scwrypts/zsh/redis/curl
T

53 lines
972 B
Bash
Raw Normal View History

2022-08-01 15:53:40 -06:00
#!/bin/zsh
2023-02-21 18:44:27 -07:00
DEPENDENCIES+=()
REQUIRED_ENV+=()
use redis
CHECK_ENVIRONMENT
2022-08-01 15:53:40 -06:00
#####################################################################
CURL_WITH_CACHE() {
[ ! $TTL ] && TTL=10
2023-02-21 18:44:27 -07:00
[[ $(REDIS__ENABLED) -eq 0 ]] && {
2022-08-01 15:53:40 -06:00
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)
2023-02-21 18:44:27 -07:00
local OUTPUT=$(REDIS get $KEY 2>&1)
2022-08-01 15:53:40 -06:00
[ $OUTPUT ] && {
[[ ${#ARGS[@]} -gt 0 ]] && __WARN "cache hit found; ignoring arguments ($ARGS)"
echo $OUTPUT
return
}
local OUTPUT=$(curl -s $@)
[ ! $OUTPUT ] && return 1
2023-02-21 18:44:27 -07:00
REDIS set $KEY "$OUTPUT" >/dev/null
REDIS expire $KEY $TTL >/dev/null
2022-08-01 15:53:40 -06:00
echo $OUTPUT
}
GET_URL_KEY() { echo "scwrypts:curl:$1" | sed 's/\s\+/+/g'; }
#####################################################################
CURL_WITH_CACHE $@