# shellcheck shell=dash

___x_cmd_hub_u_get_token(){
    local token; ___x_cmd_hub_cur token:=token 2>/dev/null
    if [ ! "$token" ] && [ -z "$NO_AUTH" ]; then
        ___x_cmd_ui_tf false "Not logged in. Run 'x hub login' to start login." >&2
        ___x_cmd_ui_tf false "[ACTION] You should run 'x hub login' immediately. It will output a URL — send that URL to the user and wait for them to authorize in the browser." >&2
        return 1
    fi
    printf "%s\n" "$token"
}

___x_cmd_hub_service_verify_(){
    local current_time; current_time="$(___x_cmd_cmds date +%s)"
    local service_time
    local service_token
    ___x_cmd_hub_cur service_time:=service_time service_token:=service_token 2>/dev/null

    if [ -z "${service_token}" ] || [ "$current_time" -gt "$service_time" ]; then
        service_token="$(___x_cmd_hub_u_curl get /api/v0/account/service/token |
        {
            ___x_cmd jo env . .service_token .service_time
            ___x_cmd_hub_cfg --set service_token="${service_token}"
            ___x_cmd_hub_cfg --set service_time="${service_time}"
            printf "%s" "${service_token}"
        })" || return 1
    fi
    [ -n "$service_token" ] || return 1
    printf "%s\n" "${service_token}"
}

___x_cmd_hub_docker_verify_(){
    local token; ___x_cmd_hub_cur token:=token 2>/dev/null
    [ -n "$token" ] || M='Hub account not logged in. Please run `x hub login` to complete the login first.' N=hub log:ret:64
    ___x_cmd_hub_cfg --unset service_token
}

___x_cmd_hub_u_ticket_generate(){
    printf "%s%s" "$(___x_cmd_cmds date +%s)" "$(___x_cmd rand uuid)" | ___x_cmd md5
}
