# shellcheck shell=dash disable=SC2154,2034

xrc:mod:lib shodan      host/search/facet       host/search/filter

___x_cmd_shodan_host_search(){
    local X_help_cmd='x help -m shodan host search';   help:arg-null:parse
    shodan:arg:format:raw:json2app:all
    [ $# -gt 0 ] || set - --help

    local IFS=" "
    local query=;   local facet=;
    local page=1
    while [ "$#" -gt 0 ]; do
        case "$1" in
            -h|--help)              x help -m shodan host search;               return ;;
            -f|--facet|--facets)    [ -n "$2" ] || N=shodan M="Arg Expect after $1" log:ret:64;  facet="$2";     shift 2 ;;
            -p|--page)              [ -n "$2" ] || N=shodan M="Arg Expect after $1" log:ret:64;  page="$2";      shift 2 ;;

            facet|facets)           ___x_cmd_shodan_host_search_facet   "$@";   return ;;
            filter|filters)         ___x_cmd_shodan_host_search_filter  "$@";   return ;;

            # *:*)                  query="$query $1" ;;
            *)                      query="$*"; break ;;
        esac
    done

    [ -n "${query}" ] || N=shodan M="Empty search query" log:ret:64
    set -- --data-urlencode "query=$query" --data-urlencode "page=$page"
    [ -z "$facet" ] || set -- "$@" --data-urlencode "facets=$facet"

    ___x_cmd_shodan_host_search___"$format" "$@"
}

___x_cmd_shodan_host_search___app(){
    local data;     data="$( ___x_cmd_shodan_host_search___raw "$@" )"    || shodan:data:ret
    ___x_cmd_pipevar data       x j2y
}

___x_cmd_shodan_host_search___json(){
    local data;     data="$( ___x_cmd_shodan_host_search___raw "$@" )"    || shodan:data:ret
    ___x_cmd_pipevar data
}


___x_cmd_shodan_host_search___raw(){
    X_CCMD_TIMEOUT=1h \
        ___x_cmd_shodan_ourl get "/shodan/host/search" "$@"
}

