# shellcheck shell=bash
xrc curl
___x_cmd_ourl_raw(){
    ourl:debug "___x_cmd_curl $*"
    if [ -n "$___X_CMD_OURL_STDERR2STDOUT" ]; then  ___x_cmd_curl "$@" 2>&1
    else                                            ___x_cmd_curl "$@"
    fi
}

___x_cmd_ourl_get(){
    [ -z "$XOURL_GET_BEFORE" ] || eval "$XOURL_GET_BEFORE"

    [ -n "$XOURL_URL" ] || return 64
    local url="$1"; shift
    case "$url" in
        http://*|https://*)     ___x_cmd_ourl_raw --silent --get     "${url}"              "$@" ;;
        *)                      ___x_cmd_ourl_raw --silent --get     "$XOURL_URL/${url#/}" "$@" ;;
    esac

    local err="$?"
    [ -z "$XOURL_GET_AFTER" ] || eval "$XOURL_GET_AFTER"
    return "$err"
}

___x_cmd_ourl_post(){
    [ -z "$XOURL_POST_BEFORE" ] || eval "$XOURL_POST_BEFORE"
    [ -n "$XOURL_URL" ] || return 64
    local url="$1"; shift
    case "$url" in
        http://*|https://*)     ___x_cmd_ourl_raw --silent -X POST   "${url}"              "$@" ;;
        *)                      ___x_cmd_ourl_raw --silent -X POST   "$XOURL_URL/${url#/}" "$@" ;;
    esac

    local err="$?"
    [ -z "$XOURL_POST_AFTER" ] || eval "$XOURL_POST_AFTER"
    return "$err"
}

___x_cmd_ourl_put(){
    [ -z "$XOURL_PUT_BEFORE" ] || eval "$XOURL_PUT_BEFORE"
    [ -n "$XOURL_URL" ] || return 64
    local url="$1"; shift
    case "$url" in
        http://*|https://*)     ___x_cmd_ourl_raw --silent -X PUT    "${url}"              "$@" ;;
        *)                      ___x_cmd_ourl_raw --silent -X PUT    "$XOURL_URL/${url#/}" "$@" ;;
    esac

    local err="$?"
    [ -z "$XOURL_PUT_AFTER" ] || eval "$XOURL_PUT_AFTER"
    return "$err"
}

___x_cmd_ourl_del(){
    [ -z "$XOURL_DEL_BEFORE" ] || eval "$XOURL_DEL_BEFORE"
    [ -n "$XOURL_URL" ] || return 64
    local url="$1"; shift
    case "$url" in
        http://*|https://*)     ___x_cmd_ourl_raw --silent -X DELETE   "${url}"              "$@" ;;
        *)                      ___x_cmd_ourl_raw --silent -X DELETE   "$XOURL_URL/${url#/}" "$@" ;;
    esac

    local err="$?"
    [ -z "$XOURL_DEL_AFTER" ] || eval "$XOURL_DEL_AFTER"
    return "$err"
}

___x_cmd_ourl_patch(){
    [ -z "$XOURL_DEL_BEFORE" ] || eval "$XOURL_DEL_BEFORE"
    [ -n "$XOURL_URL" ] || return 64
    local url="$1"; shift
    case "$url" in
        http://*|https://*)     ___x_cmd_ourl_raw --silent -X PATCH   "${url}"              "$@" ;;
        *)                      ___x_cmd_ourl_raw --silent -X PATCH   "$XOURL_URL/${url#/}" "$@" ;;
    esac

    local err="$?"
    [ -z "$XOURL_PATCH_AFTER" ] || eval "$XOURL_DEL_AFTER"
    return "$err"
}



