diff --git a/cmd/whois/main.go b/cmd/whois/main.go index 4045d17..c575263 100644 --- a/cmd/whois/main.go +++ b/cmd/whois/main.go @@ -62,10 +62,8 @@ options: os.Exit(1) } - c := whois.NewClient() - c.SetDialer(proxy.FromEnvironment()) - - text, err := c.Whois(flag.Args()[0], *server) + text, err := whois.NewClient(). + SetDialer(proxy.FromEnvironment()).Whois(flag.Args()[0], *server) if err != nil { fmt.Println(err.Error()) os.Exit(1) diff --git a/whois.go b/whois.go index d14b350..3b937c5 100644 --- a/whois.go +++ b/whois.go @@ -46,9 +46,10 @@ var DefaultClient = NewClient() // Client is whois client type Client struct { - dialer proxy.Dialer - timeout time.Duration - elapsed time.Duration + dialer proxy.Dialer + timeout time.Duration + elapsed time.Duration + disableStats bool } // Version returns package version @@ -82,24 +83,33 @@ func NewClient() *Client { } // SetDialer set query net dialer -func (c *Client) SetDialer(dialer proxy.Dialer) { +func (c *Client) SetDialer(dialer proxy.Dialer) *Client { c.dialer = dialer + return c } // SetTimeout set query timeout -func (c *Client) SetTimeout(timeout time.Duration) { +func (c *Client) SetTimeout(timeout time.Duration) *Client { c.timeout = timeout + return c +} + +// SetDisableStats set disable stats +func (c *Client) SetDisableStats(disabled bool) *Client { + c.disableStats = disabled + return c } // Whois do the whois query and returns whois information func (c *Client) Whois(domain string, servers ...string) (result string, err error) { start := time.Now() defer func() { - result = fmt.Sprintf("%s\n\n%% Query time: %d msec\n%% WHEN: %s\n", - strings.TrimRight(result, "\n"), - time.Since(start).Milliseconds(), - start.Format("Mon Jan 02 15:04:05 MST 2006"), - ) + result = strings.TrimSpace(result) + if result != "" && !c.disableStats { + result = fmt.Sprintf("%s\n\n%% Query time: %d msec\n%% WHEN: %s\n", + result, time.Since(start).Milliseconds(), start.Format("Mon Jan 02 15:04:05 MST 2006"), + ) + } }() domain = strings.Trim(strings.TrimSpace(domain), ".")