# shellcheck shell=bash disable=SC2154
# https://developer.godaddy.com/doc/endpoint/domains#/v1/list
___x_cmd_gddy_domain_ls(){
    local X_help_cmd='x help -m gddy domain ls';    help:arg:parse
    param:scope     ___x_cmd_gddy
    param:dsl    '
options:
    --shopper_id          "Shopper ID whose domains are to be retrieved"                                                  <>=""
    --statuses            "Only include results with status value in any of "                                             <>=""  = ACTIVE AWAITING_CLAIM_ACK  AWAITING_DOCUMENT_AFTER_TRANSFER  AWAITING_DOCUMENT_AFTER_UPDATE_ACCOUNT AWAITING_DOCUMENT_UPLOAD  AWAITING_FAILED_TRANSFER_WHOIS_PRIVACY
    --statusGroups        "Only include results with status value in any of the specified groups"                         <>=""  = INACTIVE PRE_REGISTRATION REDEMPTION RENEWABLE VERIFICATION_ICANN VISIBLE
    --includes            "Optional details to be included in the response"                                               <>=""  = authCode contacts nameServers
    --modifiedDate        "Only include results that have been modified since the specified date"                         <>=""
    --limit               "Maximum number of domains to return"                                                           <>=""
    --marker              "Marker Domain to use as the offset in results"                                                 <>=""

    --json|-j             "output raw JSON data"
    --csv                 "output raw JSON data"
'
    param:run

    gddy:arg:format:all

    ___x_cmd_gddy_domain_ls___"${format}"
    ___x_cmd_gddy_http_error
}

___x_cmd_gddy_domain_ls___app(){
    local data; data="$( ___x_cmd_gddy_domain_ls___csv )" || ourl:data:ret
    local ___X_CMD_CSV_APP_DATA_Domain=
    local ___X_CMD_CSV_APP_DATA_DomainId=
    local ___X_CMD_CSV_APP_DATA_CreatedAt=
    local ___X_CMD_CSV_APP_DATA_Expires=

    ___x_cmd_pipevar    data     x csv --app --width 25%,25%,25%,-  --return var
    local domain="$___X_CMD_CSV_APP_DATA_Domain"
    [ -n "$domain" ] || return
    domain="${domain%%,*}"
    local id
    x ui select id "Next move for [Domain=$domain]:"   \
        "x gddy domain info $domain"                   \
        "x gddy domain record ls $domain"              \
        "open https://dcc.godaddy.com/control/portfolio"    \
        "Exit"

    case "$id" in
        1)      x gddy domain info "$domain" ;;
        2)      x gddy domain record ls "$domain" ;;
        3)      x open "https://dcc.godaddy.com/control/portfolio" ;;
        4)      return
    esac
}

___x_cmd_gddy_domain_ls___csv(){
    local data; data="$( ___x_cmd_gddy_domain_ls___raw )" || ourl:data:ret

    if [ -z "$___X_CMD_GDDY_DOMAIN_DEMO" ]; then
        ___x_cmd_pipevar    data    ___x_cmd_gddy_domain_ls___parse_json2csv
    else
        ___x_cmd_pipevar    data    ___x_cmd_gddy_domain_ls___parse_json2csv | x csv awk '{
            str = substr(cval(1) , 0 ,index(cval(1), ".")-1)
            end = substr(cval(1) , index(cval(1), "."))
            gsub(".","*", str)
            print str end","cval(2)","cval(3)","cval(4)
        }'
    fi
}


___x_cmd_gddy_domain_ls___json(){
    local data; data="$( ___x_cmd_gddy_domain_ls___raw )" || ourl:data:ret
    ___x_cmd_pipevar    data
}


___x_cmd_gddy_domain_ls___raw(){
    gddy:info "Getting domain list data"
    ___x_cmd_gddy_ourl get "/v1/domains" --data-urlencode statuses="$statuses" --data-urlencode statusGroups="$statusGroups"  \
                                         --data-urlencode includes="$includes" --data-urlencode modifiedDate="$modifiedDate" \
                                         --data-urlencode limit="$limit"       --data-urlencode marker="$marker"
}

___x_cmd_gddy_domain_ls___parse_json2csv(){
    x ja 2c .domain .domainId .createdAt .expires |\
        x csv header --add  Domain DomainId  CreatedAt Expires
}


