# shellcheck shell=dash disable=SC2154,SC2034
___X_CMD_SHODAN_ENTITYDB_TIMELIMIT=1d
___X_CMD_SHODAN_ENTITYDB_URL="https://entitydb.shodan.io/api"

___x_cmd_shodan_entitydb_search(){
    local X_help_cmd='x help -m shodan entitydb search';   help:arg-null:parse
    shodan:arg:format:all
    local name="$1"; local url=
    [ -n "$name" ]   ||  N=shodan M="Provide a name" log:ret:64

    if ___x_cmd is int "$name"; then    url="${___X_CMD_SHODAN_ENTITYDB_URL}/entities/${name}"
    else                                url="${___X_CMD_SHODAN_ENTITYDB_URL}/entities/symbol/${name}"
    fi

    "___x_cmd_shodan_entitydb_search___${format}"
}


# shellcheck shell=dash disable=SC2034

___x_cmd_shodan_entitydb_search___app(){
    local data
    local ___X_CMD_CSV_APP_DATA_Report_year=
    local ___X_CMD_CSV_APP_DATA_Report_at=
    local ___X_CMD_CSV_APP_DATA_Revenue=
    local ___X_CMD_CSV_APP_DATA_Net_income=
    local ___X_CMD_CSV_APP_DATA_Filing_url=

    data="$( ___x_cmd_shodan_entitydb_search___csv )"    || shodan:data:ret
    ___x_cmd_pipevar data x csv  --app --return var

    [ -n "$___X_CMD_CSV_APP_DATA_Report_at" ] || return
    local id
    x ui select id \
        "Next move for [entity=$name]"              \
        "Open Financial report on website"          \
        "Exit"

        case "$id" in
        1)      x open "$___X_CMD_CSV_APP_DATA_Filing_url"     ;;
        2)      return                                         ;;
    esac
}

___x_cmd_shodan_entitydb_search___csv(){
    local data
    data="$( ___x_cmd_shodan_entitydb_search___raw )"    || shodan:data:ret
    ___x_cmd_pipevar data    ___x_cmd_shodan_entitydb_search___parse_json2csv
}

___x_cmd_shodan_entitydb_search___tsv(){
    local data
    data="$( ___x_cmd_shodan_entitydb_search___raw )"    || shodan:data:ret
    ___x_cmd_pipevar data ___x_cmd_shodan_entitydb_search___parse_json2csv | x csv 2tsv
}

___x_cmd_shodan_entitydb_search___json(){
    local data
    data="$( ___x_cmd_shodan_entitydb_search___raw )"    || shodan:data:ret
    ___x_cmd_pipevar data
}

___x_cmd_shodan_entitydb_search___parse_json2csv(){
    x jo .finance_data |\
        x ja 2c .report_year .report_at .revenue .net_income .filing_url |\
        x csv header --add Report_year Report_at Revenue Net_income Filing_url
}

___x_cmd_shodan_entitydb_search___raw(){
    x ccmd "$___X_CMD_SHODAN_ENTITYDB_TIMELIMIT" 2>/dev/null -- \
        x curl  --fail-with-body  -sS \
        "${url}" \
        || N=shodan M="Fail for name=${name}" log:ret:1
}

