# shellcheck shell=bash disable=SC2154,SC2034
___x_cmd_shodan_scan_ls(){
    local X_help_cmd='x help -m shodan scan ls';  help:arg:parse
    shodan:arg:format:all
    shodan:info "Get list of all the created scans"
    ___x_cmd_shodan_scan_ls___"${format}"
}

___x_cmd_shodan_scan_ls___app(){
    local data; data="$( ___x_cmd_shodan_scan_ls___csv )" || shodan:data:ret

    if [ "$___X_CMD_SHODAN_SCAN_LS___APP" = ll ]; then
        ___x_cmd_pipevar    data     x csv static_tab
        return
    fi

    local ___X_CMD_CSV_APP_DATA_ID=
    local ___X_CMD_CSV_APP_DATA_Status=
    local ___X_CMD_CSV_APP_DATA_Size=
    local ___X_CMD_CSV_APP_DATA_Checked=
    local ___X_CMD_CSV_APP_DATA_Created=
    ___x_cmd_pipevar    data    x csv --app --return var

    [ -n "$___X_CMD_CSV_APP_DATA_ID" ] || return
    local scanid="$___X_CMD_CSV_APP_DATA_ID"

    local id
    x ui select id "Next move to scan id=$scanid" \
        "info"      \
        "ABORT"

    case "$id" in
        1)  ___x_cmd_shodan_scan info   "$scanid" ;;
        # 2)  ___x_cmd_shodan_scan rm     "$scanid" ;;
        *)  return ;;
    esac
}

___x_cmd_shodan_scan_ls___csv(){
    local data; data="$( ___x_cmd_shodan_scan_ls___raw )" || shodan:data:ret
    ___x_cmd_pipevar    data    ___x_cmd_shodan_scan_ls___parse_json2csv
}

___x_cmd_shodan_scan_ls___json(){
    local data; data="$( ___x_cmd_shodan_scan_ls___raw )" || shodan:data:ret
    ___x_cmd_pipevar    data
}

___x_cmd_shodan_scan_ls___raw(){
    X_CCMD_TIMEOUT=5s ___x_cmd_shodan_ourl get "/shodan/scans"
}

___x_cmd_shodan_scan_ll(){
    local data; data="$( ___x_cmd_shodan_scan_ls___raw )" || shodan:data:ret
    ___x_cmd_pipevar    data ___x_cmd_shodan_scan_ls___parse_json2csv |\
        x csv static_tab
}


# Section: parse
___x_cmd_shodan_scan_ls___parse_json2csv(){
    x jo .matches.\*              \
        | x ja jl2c  .id .status .size .status_check. .created \
        | x csv header --add  ID  Status  Size Checked Created
}
# EndSection
