package service import ( "context" "fmt" "io" "net/http" "strings" ) func FetchCodexWhamUsage( ctx context.Context, client *http.Client, baseURL string, accessToken string, accountID string, ) (statusCode int, body []byte, err error) { if client == nil { return 0, nil, fmt.Errorf("nil http client") } bu := strings.TrimRight(strings.TrimSpace(baseURL), "/") if bu == "" { return 0, nil, fmt.Errorf("empty baseURL") } at := strings.TrimSpace(accessToken) aid := strings.TrimSpace(accountID) if at == "" { return 0, nil, fmt.Errorf("empty accessToken") } if aid == "" { return 0, nil, fmt.Errorf("empty accountID") } req, err := http.NewRequestWithContext(ctx, http.MethodGet, bu+"/backend-api/wham/usage", nil) if err != nil { return 0, nil, err } req.Header.Set("Authorization", "Bearer "+at) req.Header.Set("chatgpt-account-id", aid) req.Header.Set("Accept", "application/json") if req.Header.Get("originator") == "" { req.Header.Set("originator", "codex_cli_rs") } resp, err := client.Do(req) if err != nil { return 0, nil, err } defer resp.Body.Close() body, err = io.ReadAll(resp.Body) if err != nil { return resp.StatusCode, nil, err } return resp.StatusCode, body, nil }