#!/bin/sh

prog=${0##*/}
usage() {
	cat <<-EOF
		usage: wget [-cqS] [--spider] [-O FILE] [-o LOGFILE] [--header STR]
			[--post-data STR | --post-file FILE] [-Y on/off]
			[-P DIR] [-U AGENT] [-T SEC] URL...

		Retrieve files via HTTP or FTP

			--spider	Only check URL existence: \$? is 0 if exists
			--header STR	Add STR (of form 'header: value') to headers
			--post-data STR	Send STR using POST method
			--post-file FILE	Send FILE using POST method
			-c		Continue retrieval of aborted transfer
			-q		Quiet
			-P DIR		Save to DIR (default .)
			-S		Show server response
			-T SEC		Network read timeout is SEC seconds
			-O FILE		Save to FILE ('-' for stdout)
			-o LOGFILE	Log messages to FILE
			-U STR		Use STR for User-Agent header
			-Y on/off	Use proxy
	EOF
	exit $1
}

msg() {
	if ! [ -n "$quiet" ]; then
		# busybox wget sends to stderr
		echo "$@" >&2
	fi
}

OPTS=$(getopt -l quiet,help,header:,output-document:,spider,timeout:,tries: -o "qhO:T:t:" -n $prog -- "$@") || usage "1" >&2

quiet=
eval set -- "$OPTS"
while true; do
	opt="$1"
	case "$opt" in
		-h|--help)
			usage 0
			;;
		-q|--quiet)
			quiet=1
			;;
		--header) shift;;
		--spider)
			exit ${SPIDER_STATUS:-0}
			;;
		-O|--output-document)
			shift
			outfile="$1"
			;;
		-T|--timeout) shift;;
		-t|--tries) shift;;
		--)
			shift
			break
			;;
		*) usage "1" >&2
			;;
	esac
	shift
done

if [ $# -eq 0 ]; then
	usage "1" >&2
fi

for url; do
	case "$url" in
		"") msg "bad address"; exit 1;;
		*fail*) msg "bad address"; exit 1;;
		*404*) msg "wget: server returned error: HTTP/1.1 404 Not Found"; exit 1;;
	esac
done

host="${url#http*://}"
host="${host%%/*}"
path="${url#http*://$host}"
path="${path#${WGET_STRIP_PREFIX:-/}}"
path="${path%\?*}"


if [ -z "$WGETCONTENT" ]; then
	# Scaleway has all the data on a single TXT endpoint
	if [ "$CLOUD" = "scaleway" ]; then
		cat "${WGET_YAML:-$host.txt}"
	else
		(
		IFS=/
		set -- ${path#/}
		yx -f "${WGET_YAML:-$host.yaml}" "$@" 2>/dev/null
		)
	fi
fi

: "${outfile:=index.html}"
case "$outfile" in
	-)	msg "writing to stdout"
		echo "$WGETCONTENT"
		;;
	*)	msg "saving to '$outfile'"
		echo "$WGETCONTENT" > "$outfile"
		;;
esac

