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 $@ |