#!/usr/bin/env bash
{ set +x; } 2>/dev/null

function github-body() {
	{ set +x; } 2>/dev/null
	# { set +x; } 2>/dev/null hide githubtoken from debug
	# usage: ( set -x; github-body "$@" )
	[[ $# == 0 ]] && set -- "https://api.github.com"
	if [[ -z $githubtoken ]]; then
		! [ -e ~/.githubtoken ] && echo "ERROR: ~/.githubtoken NOT EXISTS" && exit 1
		! [ -s ~/.githubtoken ] && echo "ERROR: ~/.githubtoken EMPTY" && exit 1
		githubtoken="$(cat ~/.githubtoken)" || exit 1
	fi
	local path="$TMPDIR".github.curl/$$
	[ -f "$path" ] && rm "$path"
	if ! [ -d "$path" ]; then
		mkdir -p "$path" || { ( set -x; mkdir -p "$path" ); return $?; }
	fi
	if [[ $# != 0 ]] && [[ -n ${!#} ]] && [[ ${!#} != "https://"* ]]; then
		set -- "${@:1:($#-1)}" "https://api.github.com/${!#}"
	fi
	# --max-time X
	set curl -s -S -u $githubtoken:x-oauth-basic -o - "$@"
	"$@"
}

github-body "$@"
