# shellcheck shell=sh
# shellcheck disable=SC3043,SC2294,2006
___x_cmd_api_cf(){
    local op="${1}"
    local url="${2}"
    shift 2
    local _auth_token="${___X_CMD_API_CF_TOKEN}"
    local _auth_email="${___X_CMD_API_CF_EMAIl}"
    local ___X_CMD_API_RSP_HEADER="$___X_CMD_API_TMP/.____x_cmd_cf_curl_header"

    [ -n "${_auth_token}" ] || {
        _auth_token="$(___x_cmd cf --cur --get token 2>/dev/null)" || {
            api:error "token is null. run `x cf --cfg set token=\<your_token\>` or ___X_CMD_API_CF_TOKEN=<your_token>"
            return 1
        }
    }

    [ -n "${_auth_email}" ] || {
        _auth_email="$(___x_cmd cf --cur --get email 2>/dev/null)" || {
            api:error "email is null. run `x cf --cfg set email=\<your_email\>` or ___X_CMD_API_CF_EMAIL=<your_email>"
            return 1
        }
    }

    [ -n "${url}" ] || {
        api:error "URL cannot be empty"
    }
    local _curl_header="X-Auth-Key: ${_auth_token}
X-Auth-Email: ${_auth_email}
${content_type:-"Content-Type: application/json"}
${_X_CMD_API_CF_HEADER}"

    _curl_header="$(___x_cmd curl gencode "${_curl_header}")"

    local _curl_url="https://api.cloudflare.com/client/v4${url}"
    ___x_cmd_api_cf_curl "${op}" "$@"
}

___x_cmd_api_cf_curl(){
    local op="${1}"; shift
    local method
    case "$op" in
        get)
            method="GET" ;;
        post)
            method="POST" ;;
        put)
            method="PUT" ;;
        delete)
            method="DELETE" ;;
        patch)
            method="PATCH" ;;
        *)  _____x_cmd_api_help cf; return
        ;;
    esac
    api:debug "x curl -X  ${method}  -s  $_curl_header  -D  ${___X_CMD_API_RSP_HEADER}   $*   $_curl_url"
    eval       ___x_cmd curl -X "${method}" -s "$_curl_header" -D "${___X_CMD_API_RSP_HEADER}" "$@" "$_curl_url"
}