From 7d63867f365163f149db5d768c71f518f9eaf711 Mon Sep 17 00:00:00 2001 From: s Date: Fri, 7 Nov 2025 11:50:47 -0500 Subject: refactor: extract json output formatting to utils.PrintJSON and add colorized json output with new dns tld command --- internal/client/dns.go | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 internal/client/dns.go (limited to 'internal/client') diff --git a/internal/client/dns.go b/internal/client/dns.go new file mode 100644 index 0000000..08449e0 --- /dev/null +++ b/internal/client/dns.go @@ -0,0 +1,51 @@ +package client + +import ( + "bufio" + "encoding/json" + "fmt" + "net/http" + "net/url" + + "git.db.org.ai/dborg/internal/models" +) + +func (c *Client) CheckDNSTLDStream(params *models.DNSTLDParams, callback func(result json.RawMessage) error) error { + term := url.PathEscape(params.Term) + fullURL := c.config.BaseURL + "/dns/tld/" + term + + req, err := http.NewRequest(http.MethodGet, fullURL, nil) + if err != nil { + return fmt.Errorf("failed to create request: %w", err) + } + + req.Header.Set("User-Agent", c.config.UserAgent) + + resp, err := c.httpClient.Do(req) + if err != nil { + return fmt.Errorf("request failed: %w", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("API request failed with status %d", resp.StatusCode) + } + + scanner := bufio.NewScanner(resp.Body) + for scanner.Scan() { + line := scanner.Bytes() + if len(line) == 0 { + continue + } + + if err := callback(json.RawMessage(line)); err != nil { + return fmt.Errorf("callback failed: %w", err) + } + } + + if err := scanner.Err(); err != nil { + return fmt.Errorf("failed to read response: %w", err) + } + + return nil +} -- cgit v1.2.3