# shellcheck shell=sh
# shellcheck disable=SC3043,SC2294

___x_cmd_api_gt(){
    local op="$1"
    local _auth_token="${___X_CMD_API_GT_TOKEN:-$(___x_cmd gt --cfg get token 2>/dev/null)}"
    local _auth_header="${_auth_token:+"-H \"Authorization:token ${_auth_token}\""}"
    local _curl_header="${___X_CMD_API_GT_HEADER:-"-s -H \"Content-Type: application/json;charset=UTF-8\""}"
    case "${op}" in
        "")                             api:error -h 'x api gt --help' -c 'x api gt <get|post|put|patch|del> <API shortcut endpoint> [extends "curl" options]' "gt - accepts 1 arg(s), received 0"; return 1 ;;
        -h|--help)                      _____x_cmd_api_help gt; return    ;;

        get|post|put|patch|del)
            local _curl_url="${___X_CMD_API_GT_ENDPOINT:-"https://gitee.com/api/v5"}$2" ; shift 2
            ___x_cmd_api_gt_"$op" "$@"
            ;;
        *)
            local _curl_url="${___X_CMD_API_GT_ENDPOINT:-"https://gitee.com/api/v5"}$op"; shift 1
            ___x_cmd_api_gt_get "$@"
            ;;
    esac
}

# using eval: $_curl_header and $_auth_header using default ${xxx:-xxxx}
___x_cmd_api_gt_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_gt_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_gt_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_gt_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_gt_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\""
}
