(reader io.Reader)
| 108 | } |
| 109 | |
| 110 | func parseResponseEnvelope(reader io.Reader) (*response, error) { |
| 111 | // Schema for Tunnelstore responses in the v1 API. |
| 112 | // Roughly, it's a wrapper around a particular result that adds failures/errors/etc |
| 113 | var result response |
| 114 | // First, parse the wrapper and check the API call succeeded |
| 115 | if err := json.NewDecoder(reader).Decode(&result); err != nil { |
| 116 | return nil, errors.Wrap(err, "failed to decode response") |
| 117 | } |
| 118 | if err := result.checkErrors(); err != nil { |
| 119 | return nil, err |
| 120 | } |
| 121 | if !result.Success { |
| 122 | return nil, ErrAPINoSuccess |
| 123 | } |
| 124 | |
| 125 | return &result, nil |
| 126 | } |
| 127 | |
| 128 | func parseResponse(reader io.Reader, data interface{}) error { |
| 129 | result, err := parseResponseEnvelope(reader) |
no test coverage detected