#!/bin/sh

check_http_error() {
	PATTERN="$1"
	test -z "$PATTERN" && PATTERN='[45][0-9][0-9]'
	head -1 | grep "^HTTP/[0-9.]* $PATTERN "
}

URL="$1"
TEMP="`mktemp urledit.XXXXXXXXX`"
MIMETYPES='Accept: application/json, text/csv, text/plain, text/xml; q=0.8'
test -n "$HTTP_USERNAME" && OPTS="-u $HTTP_USERNAME"
curl -I $OPTS -H "$MIMETYPES" "$URL" > "$TEMP" || exit 1
if check_http_error 401 <"$TEMP"; then
	read -p "Username: " HTTP_USERNAME
	HTTP_USERNAME="$HTTP_USERNAME" $0 "$@"
	exit $?
fi
check_http_error <"$TEMP" && exit 1
MIMETYPE=`grep -i '^Content-Type:' "$TEMP"`
curl $OPTS -H "$MIMETYPES" "$URL" > "$TEMP"
$EDITOR "$TEMP"
if curl -i $OPTS -H "$MIMETYPE" -T "$TEMP" "$URL" | check_http_error; then
	echo "Problem saving.  Your file is at $TEMP." 1>&2
	exit 1
else
	rm "$TEMP"
fi

