package libs func getJSON(rawURL string, params url.Values, timeout time.Duration) (map[string]any, error) { if timeout <= 0 { timeout = 5 * time.Second } if params != nil { if strings.Contains(rawURL, "?") { rawURL += "&" + params.Encode() } else { rawURL += "?" + params.Encode() } } req, err := http.NewRequest(http.MethodGet, rawURL, nil) if err != nil { return nil, err } req.Header.Set("Accept", "application/json") req.Header.Set("User-Agent", "big-qmt-go/1") client := &http.Client{Timeout: timeout} resp, err := client.Do(req) if err != nil { return nil, err } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { return nil, err } if resp.StatusCode >= 400 { return nil, fmt.Errorf("http %d: %s", resp.StatusCode, strings.TrimSpace(string(body))) } out := map[string]any{} if err := json.Unmarshal(body, &out); err != nil { return nil, err } return out, nil }