# shellcheck shell=sh
# shellcheck disable=SC3043,SC2294,2006
___x_cmd_api_cloudflare(){
    local op="${1}"
    local url="${2}"
    shift 2
    local _auth_token="${___X_CMD_API_CLOUDFLARE_TOKEN}"
    local ___X_CMD_API_RSP_HEADER="$___X_CMD_API_TMP/.____x_cmd_cloudflare_curl_header"
    [ -n "${_auth_token}" ] || {
        _auth_token="$(x cloudflare config get token 2>/dev/null)" || {
            api:error "token is null. run `x cloudflare config --set token=\<your_token\>` or ___X_CMD_API_CLOUDFLARE_TOKEN=<your_token>"
            return 1
        }
    }
    [ -n "${url}" ] || {
        api:error "URL cannot be empty"
    }
    local _curl_header="Authorization: Bearer ${_auth_token}
${content_type:-"Content-Type: application/json"}
${_X_CMD_API_CLOUDFLARE_HEADER}"

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

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

___x_cmd_api_cloudflare_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 cloudflare; return
        ;;
    esac
    api:debug "x curl -X  ${method}  -s  $_curl_header  -D  ${___X_CMD_API_RSP_HEADER}   $*   $_curl_url"
    eval       x curl -X "${method}" -s "$_curl_header" -D "${___X_CMD_API_RSP_HEADER}" "$@" "$_curl_url"
}