MCPcopy Create free account
hub / github.com/compozy/agh / readAPIErrorBody

Function readAPIErrorBody

internal/cli/client.go:6294–6324  ·  view source on GitHub ↗
(statusCode int, status string, body []byte)

Source from the content-addressed store, hash-verified

6292}
6293
6294func readAPIErrorBody(statusCode int, status string, body []byte) error {
6295 var payload struct {
6296 Error string `json:"error"`
6297 }
6298 if len(body) > 0 && json.Unmarshal(body, &payload) == nil && strings.TrimSpace(payload.Error) != "" {
6299 return errors.New(redactToolDiagnostic(payload.Error))
6300 }
6301 var memoryPayload contract.MemoryErrorPayload
6302 if len(body) > 0 && json.Unmarshal(body, &memoryPayload) == nil &&
6303 strings.TrimSpace(memoryPayload.Code) != "" {
6304 message := strings.TrimSpace(memoryPayload.Message)
6305 if message == "" {
6306 message = strings.TrimSpace(memoryPayload.Code)
6307 }
6308 return fmt.Errorf("%s: %s", strings.TrimSpace(memoryPayload.Code), redactToolDiagnostic(message))
6309 }
6310 var toolPayload contract.ToolErrorResponse
6311 if len(body) > 0 && json.Unmarshal(body, &toolPayload) == nil && toolPayload.Error.Code != "" {
6312 return newToolAPIError(statusCode, status, toolPayload)
6313 }
6314
6315 message := strings.TrimSpace(string(body))
6316 if message == "" {
6317 message = status
6318 }
6319 message = redactToolDiagnostic(message)
6320 if strings.TrimSpace(status) == "" {
6321 return errors.New(message)
6322 }
6323 return fmt.Errorf("daemon api %s: %s", status, message)
6324}
6325
6326func drainResponseBody(method string, path string, body io.Reader) error {
6327 if _, err := io.Copy(io.Discard, body); err != nil {

Calls 2

redactToolDiagnosticFunction · 0.85
newToolAPIErrorFunction · 0.85