# shellcheck shell=dash

___x_cmd_shodan_cve_count(){
    local format=yml

    local cpe23=
    local kev=
    local epss=
    local product=
    local skip=
    local limit=
    local start=
    local end=

    while [ $# -gt 0 ]; do
        case "$1" in
            --cpe23)            cpe23=$2;           shift 2 ;;
            --product)          product=$2;         shift 2 ;;
            --kev)              kev=$2;             shift 2 ;;
            --epss)             epss=$2;            shift 2 ;;
            --skip)             skip=$2;            shift 2 ;;
            --limit)            limit=$2;           shift 2 ;;
            --start)            start=$2;           shift 2 ;;
            --end)              end=$2;             shift 2 ;;

            --json)             format=json;        shift 1 ;;
            --yml)              format=yml;         shift 1 ;;

            -h|--help)          ___x_cmd help -m shodan cve count;
                                return  ;;

            *)                  break ;;
        esac
    done

    ___x_cmd_shodan_cve_count___"$format" "$@"
}

___x_cmd_shodan_cve_count___yml(){
    ___x_cmd_shodan_cve_count___json "$@" | ___x_cmd j2y
}

___x_cmd_shodan_cve_count___json(){
    ___x_cmd_shodan_cve_count___raw "$@"
}

___x_cmd_shodan_cve_count___raw(){
    [ -z "$cpe23"   ]  ||  set -- "$@" --data-urlencode "cpe23=${cpe23}"
    [ -z "$product" ]  ||  set -- "$@" --data-urlencode "product=${product}"
    [ -z "$kev"     ]  ||  set -- "$@" --data-urlencode "is_kev=${kev}"
    [ -z "$epss"    ]  ||  set -- "$@" --data-urlencode "sort_by_epss=${epss}"
    [ -z "$skip"    ]  ||  set -- "$@" --data-urlencode "skip=${skip}"
    [ -z "$limit"   ]  ||  set -- "$@" --data-urlencode "limit=${limit}"
    [ -z "$start"   ]  ||  set -- "$@" --data-urlencode "start_date=${start}"
    [ -z "$end"     ]  ||  set -- "$@" --data-urlencode "end_date=${end}"

    ___x_cmd ccmd 1h -- \
        ___x_cmd curl --silent --get \
            --data-urlencode count=true \
            'https://cvedb.shodan.io/cves'  "$@"
}
