# shellcheck shell=dash

# Add more fetch: plwr, chrome+cdp

___x_cmd_webfetch___main(){
    [ "$#" -gt 0 ] ||       set -- --help

    local method_list=""

    local ttl=10m

    while [ $# -gt 0 ]; do
        case "$1" in
            -h|--help)      ___x_cmd help -m webfetch "$@" ; return 0 ;;

            --ttl)          ttl="$2" ;  arg:2:shift ;;

            --usedb|--readablelink|--curl|--links|--linksdump|--agentbrowser|--autobrowser|--plwr)
                            method_list="${method_list}${1#--}${___X_CMD_UNSEENCHAR_NEWLINE}" ; shift ;;

            --playwright)   shift; set -- --plwr "$@" ;;

            *)              break ;;
        esac
    done

    local url="$1" ;    [ -n "$url" ]   ||  N=webfetch M="Please provide url." log:ret:64

    [ -n "$method_list" ] || method_list="
readablelink
curl
"

    ___x_cmd_webfetch_try____run
    case "$?" in 130) return 130 ;; esac

}


___x_cmd_webfetch_try____run(){
    local method
    while read -r method; do
        [ -n "$method" ] ||     continue
        ___x_cmd_webfetch_try_"$method" "$url"
        case "$?" in    0|130)  return $? ;; esac
    done <<A
$method_list
A
}

___x_cmd_webfetch_try_curl(){
    local url="$1"

    # Chrome 120 on macOS
    local ua="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"

    ___x_cmd curl --fail --compressed -L -sq -A "$ua"            \
        -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" \
        -H "Accept-Language: en-US,en;q=0.5"        \
        -H "Accept-Encoding: gzip, deflate, br"     \
        -H "DNT: 1"                                 \
        -H "Connection: keep-alive"                 \
        -o /dev/stdout                              \
        "$url"
}

___x_cmd_webfetch_try_readablelink(){
    local url="$1"
    ___x_cmd readablelink webfetch "$url"
}

___x_cmd_webfetch_try_links(){
    local url="$1"
    ___x_cmd links webfetch "$url"
}

___x_cmd_webfetch_try_linksdump(){
    local url="$1"
    ___x_cmd links webfetch --dump "$url"
}

___x_cmd_webfetch_try_autobrowser(){
    local url="$1"

    if ___x_cmd agent browser isready; then
        ___x_cmd agent browser webfetch "$url"
    else
        ___x_cmd plwr webfetch "$url"
    fi
}

___x_cmd_webfetch_try_plwr(){
    local url="$1"
    ___x_cmd plwr webfetch "$url"
}

___x_cmd_webfetch_try_agentbrowser(){
    local url="$1"
    ___x_cmd agent browser webfetch "$url"
}





