package com.ff.base.utils.domain;

import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@NoArgsConstructor
@Data
public class DomainInfo {

    /**
     * 域名的名称。
     * 例如，`baidu.com`。
     */
    private String domain;

    /**
     * 域名是否可用。
     * `no` 表示域名可用
     */
    private String available;

    /**
     * 域名的类型。
     * 例如，`Commercial Sites` 表示这是商业站点类型的域名。
     */
    private String type;

    /**
     * 注册商信息。
     * 例如，`MarkMonitor Inc.` 表示域名由 MarkMonitor 注册。
     */
    private String registrar;

    /**
     * 域名的状态列表。
     * 例如，`clientDeleteProhibited` 表示域名禁止客户端删除等。
     */
    private List<String> statuses;

    /**
     * 域名创建的时间戳。
     * 以 Unix 时间戳的形式表示，单位为秒。
     */
    private Long created;

    /**
     * 域名信息更新的时间戳。
     * 以 Unix 时间戳的形式表示，单位为秒。
     */
    private Long updated;

    /**
     * 域名过期的时间戳。
     * 以 Unix 时间戳的形式表示，单位为秒。
     */
    private Long expires;

    /**
     * WHOIS 信息。
     * 包含域名的注册、更新、过期时间、注册商信息、域名状态等。
     */
    private String whois;

    /**
     * 域名的状态信息，封装了 WHOIS 数据的部分信息。
     */
    @Data
    public static class WhoisInfo {

        /**
         * 域名注册的 ID。
         */
        private String domainName;

        /**
         * 域名注册的时间戳。
         */
        private String creationDate;

        /**
         * 域名的过期时间戳。
         */
        private String registryExpiryDate;

        /**
         * 域名的更新时间戳。
         */
        private String updatedDate;

        /**
         * 域名的注册商信息。
         */
        private String registrar;

        /**
         * 域名的 WHOIS 服务器。
         */
        private String registrarWhoisServer;

        /**
         * 域名的注册商 URL。
         */
        private String registrarUrl;

        /**
         * 域名的注册商 IANA ID。
         */
        private String registrarIanaId;

        /**
         * 域名的注册商滥用联系邮件。
         */
        private String registrarAbuseContactEmail;

        /**
         * 域名的注册商滥用联系电话。
         */
        private String registrarAbuseContactPhone;

        /**
         * 域名的各类状态。
         */
        private List<String> domainStatuses;

        /**
         * 域名的名称服务器列表。
         */
        private List<String> nameServers;

        /**
         * 是否支持 DNSSEC。
         */
        private String dnssec;

        /**
         * WHOIS 数据问题报告 URL。
         */
        private String icannWhoisInaccuracyUrl;
    }
}
