From eeb3f677cae9c13440e868a83c0a621c5b22b0b5 Mon Sep 17 00:00:00 2001 From: s Date: Fri, 7 Nov 2025 12:32:24 -0500 Subject: feat: add show-only flag to filter dns tld results by existence status --- cmd/dns.go | 6 +++++- internal/client/dns.go | 12 +++++++++++- internal/models/dns.go | 3 ++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/cmd/dns.go b/cmd/dns.go index 71a0d83..022d2c9 100644 --- a/cmd/dns.go +++ b/cmd/dns.go @@ -26,6 +26,7 @@ var dnsTLDCmd = &cobra.Command{ func runDNSTLDCheck(cmd *cobra.Command, args []string) error { term := args[0] + showOnly, _ := cmd.Flags().GetString("show-only") cfg := config.New() c, err := client.New(cfg) @@ -34,7 +35,8 @@ func runDNSTLDCheck(cmd *cobra.Command, args []string) error { } params := &models.DNSTLDParams{ - Term: term, + Term: term, + ShowOnly: showOnly, } fmt.Printf("Checking TLDs for term: %s\n\n", term) @@ -54,4 +56,6 @@ func runDNSTLDCheck(cmd *cobra.Command, args []string) error { func init() { rootCmd.AddCommand(dnsCmd) dnsCmd.AddCommand(dnsTLDCmd) + + dnsTLDCmd.Flags().StringP("show-only", "s", "", "Filter results: 'exists' (only existing domains), 'nxdomain' (only non-existing domains), or empty (show all)") } diff --git a/internal/client/dns.go b/internal/client/dns.go index 08449e0..9f9d4e8 100644 --- a/internal/client/dns.go +++ b/internal/client/dns.go @@ -2,6 +2,7 @@ package client import ( "bufio" + "context" "encoding/json" "fmt" "net/http" @@ -14,6 +15,12 @@ func (c *Client) CheckDNSTLDStream(params *models.DNSTLDParams, callback func(re term := url.PathEscape(params.Term) fullURL := c.config.BaseURL + "/dns/tld/" + term + if params.ShowOnly != "" { + queryParams := url.Values{} + queryParams.Set("showOnly", params.ShowOnly) + fullURL = fullURL + "?" + queryParams.Encode() + } + req, err := http.NewRequest(http.MethodGet, fullURL, nil) if err != nil { return fmt.Errorf("failed to create request: %w", err) @@ -21,7 +28,10 @@ func (c *Client) CheckDNSTLDStream(params *models.DNSTLDParams, callback func(re req.Header.Set("User-Agent", c.config.UserAgent) - resp, err := c.httpClient.Do(req) + streamClient := &http.Client{} + req = req.WithContext(context.Background()) + + resp, err := streamClient.Do(req) if err != nil { return fmt.Errorf("request failed: %w", err) } diff --git a/internal/models/dns.go b/internal/models/dns.go index b08d8ba..51d9e50 100644 --- a/internal/models/dns.go +++ b/internal/models/dns.go @@ -1,7 +1,8 @@ package models type DNSTLDParams struct { - Term string + Term string + ShowOnly string } type DomainResult struct { -- cgit v1.2.3