| 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 |
| } |
|
|