router-for-me/CLIProxyAPI · error
request failed: %w
Error message
request failed: %w
What it means
Error "request failed: %w" thrown in router-for-me/CLIProxyAPI.
Source
Thrown at internal/httpfetch/httpfetch.go:37
// success status, and returns the response body. When maxSize is positive
// the body is rejected once it exceeds maxSize bytes.
func GetBytes(ctx context.Context, client Doer, requestURL string, headers map[string]string, maxSize int64) ([]byte, error) {
if client == nil {
client = http.DefaultClient
}
req, errRequest := http.NewRequestWithContext(ctx, http.MethodGet, requestURL, nil)
if errRequest != nil {
return nil, fmt.Errorf("create request: %w", errRequest)
}
for key, value := range headers {
if value != "" {
req.Header.Set(key, value)
}
}
resp, errDo := client.Do(req)
if errDo != nil {
return nil, fmt.Errorf("request failed: %w", errDo)
}
defer func() {
if errClose := resp.Body.Close(); errClose != nil {
log.WithError(errClose).Debug("failed to close response body")
}
}()
if resp.StatusCode < http.StatusOK || resp.StatusCode >= http.StatusMultipleChoices {
body, _ := io.ReadAll(io.LimitReader(resp.Body, 4096))
return nil, fmt.Errorf("unexpected status %d: %s", resp.StatusCode, strings.TrimSpace(string(body)))
}
reader := io.Reader(resp.Body)
if maxSize > 0 {
reader = io.LimitReader(resp.Body, maxSize+1)
}
data, errRead := io.ReadAll(reader)
if errRead != nil {View on GitHub (pinned to 78f0c4079e)
Solutions
- Check network connectivity to the target host and retry.
- Inspect the wrapped error for DNS, TLS, or timeout failures.
When it happens
Trigger: Thrown at internal/httpfetch/httpfetch.go:37 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of router-for-me/CLIProxyAPI@78f0c4079e (2026-08-15).
Data as JSON: /api/errors/74e1ed1594d86a22.
Report an issue: GitHub.