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 }