# shellcheck shell=sh
# shellcheck disable=SC3043,SC2294
___x_cmd_api_gh(){
    local op="$1"
    local _auth_token="${___X_CMD_API_GH_TOKEN:-$(___x_cmd gh --cfg get token 2>/dev/null)}"
    local _auth_header="${_auth_token:+"-H \"Authorization:token ${_auth_token}\""}"
    local _curl_header="${___X_CMD_API_GH_HEADER:-"-s -H \"accept: application/vnd.github.v3+json\""}"
    case "${op}" in
        "")                             api:error -h 'x api gh --help' -c 'x api gh <get|post|put|patch|del> <API shortcut endpoint> [extends "curl" options]' "gh - accepts 1 arg(s), received 0"; return 1 ;;
        -h|--help)                      _____x_cmd_api_help gh; return    ;;

        get|post|put|patch|del)
            local _curl_url="${___X_CMD_API_GH_ENDPOINT:-"https://api.github.com"}$2" ; shift 2
            ___x_cmd_api_gh_"$op" "$@"
            ;;
        *)
            local _curl_url="${___X_CMD_API_GH_ENDPOINT:-"https://api.github.com"}$op"; shift 1
            ___x_cmd_api_gh_get "$@"
            ;;
    esac
}

___x_cmd_api_gh_get(){
    api:debug \'___x_cmd curl -X GET "$_curl_header" "$_auth_header" "$@" "\"$_curl_url\""\'
    eval        ___x_cmd curl -X GET "$_curl_header" "$_auth_header" "$@" "\"$_curl_url\""
}

___x_cmd_api_gh_post(){

    api:debug \'___x_cmd curl -X POST "$_curl_header" "$_auth_header" "$@" "\"$_curl_url\""\'
    eval        ___x_cmd curl -X POST "$_curl_header" "$_auth_header" "$@" "\"$_curl_url\""
}

___x_cmd_api_gh_put(){
    api:debug \'___x_cmd curl -X PUT "$_curl_header" "$_auth_header" "$@" "\"$_curl_url\""\'
    eval        ___x_cmd curl -X PUT "$_curl_header" "$_auth_header" "$@" "\"$_curl_url\""
}

___x_cmd_api_gh_patch(){
    api:debug \'___x_cmd curl -X PATCH "$_curl_header" "$_auth_header" "$@" "\"$_curl_url\""\'
    eval        ___x_cmd curl -X PATCH "$_curl_header" "$_auth_header" "$@" "\"$_curl_url\""
}

___x_cmd_api_gh_del(){
    api:debug \'___x_cmd curl -X DELETE "$_curl_header" "$_auth_header" "$@" "\"$_curl_url\""\'
    eval        ___x_cmd curl -X DELETE "$_curl_header" "$_auth_header" "$@" "\"$_curl_url\""
}
