# shellcheck shell=bash

___x_cmd_shodan_query_ls(){
    # shodan:info "Obtain a list of search queries that users have saved in Shodan"
    if  ! ___x_cmd_shodan_is_interactive_env; then
        ___x_cmd_shodan_query_ls___csv  # defult should be TSV
        return
    fi

    local res;  res="$( ___x_cmd_shodan_query_ls___app )" || return
    [ -n "$res" ] || return
    local query="${res#*,*,}"; query="${query%%,*}"

    local id
    x ui select id "Next for query=$query"  \
        "search" \
        "open browser to search"  \
        "ABORT" || return

    case "$id" in
        1)  x shodan search     "$query" ;;
        2)  x shodan open       "$query" ;;
        3)  return
    esac
}

___x_cmd_shodan_query_ls___app_succ(){
    ___x_cmd_shodan_query_ls___parse_json2csv | \
        x csv app --width "10%,-,-,-,-" --return print
}

___x_cmd_shodan_query_ls___app(){
    local XOURL_succ=___x_cmd_shodan_query_ls___app_succ
    ___x_cmd_shodan_query_ls___ourl
}

___x_cmd_shodan_query_ls___csv(){
    local XOURL_succ=___x_cmd_shodan_query_ls___parse_json2csv
    ___x_cmd_shodan_query_ls___ourl
}

___x_cmd_shodan_query_ls___ourl(){
    ___x_cmd_shodan_curl sget /shodan/query
}

# Section: Parser
___x_cmd_shodan_query_ls___parse_json2csv(){
    x jo . .matches |\
        x ja 2c .title .votes .query .description .timestamp  |\
        x csv header --add  Title Votes query Description Timestamp
}

___x_cmd_shodan_query_ls___parse_jsonitem2navjson(){
    :
    # json item transformed to the dictionary
    # json item annotation
}
# EndSection
