providerErrorResponseMessage extracts error.message from the common provider error JSON envelope after stripping any dumped HTTP status line and headers.
(responseDump []byte)
| 42 | // provider error JSON envelope after stripping any dumped HTTP status |
| 43 | // line and headers. |
| 44 | func providerErrorResponseMessage(responseDump []byte) string { |
| 45 | if len(responseDump) == 0 || len(responseDump) > 64*1024 { |
| 46 | return "" |
| 47 | } |
| 48 | body := providerErrorResponseBody(responseDump) |
| 49 | var envelope struct { |
| 50 | Error struct { |
| 51 | Message string `json:"message"` |
| 52 | } `json:"error"` |
| 53 | } |
| 54 | if err := json.Unmarshal(body, &envelope); err != nil { |
| 55 | return "" |
| 56 | } |
| 57 | return strings.TrimSpace(envelope.Error.Message) |
| 58 | } |
| 59 | |
| 60 | func providerErrorResponseBody(responseDump []byte) []byte { |
| 61 | if _, body, ok := bytes.Cut(responseDump, []byte("\r\n\r\n")); ok { |
no test coverage detected