(req *http.Request, resp *Response)
| 2181 | } |
| 2182 | |
| 2183 | func (api *API) negotiateCodec(req *http.Request, resp *Response) (Codec, error) { |
| 2184 | for _, clause := range goautoneg.ParseAccept(req.Header.Get("Accept")) { |
| 2185 | for _, codec := range api.codecs { |
| 2186 | if codec.ContentType().Satisfies(clause) && codec.CanEncode(resp) { |
| 2187 | return codec, nil |
| 2188 | } |
| 2189 | } |
| 2190 | } |
| 2191 | |
| 2192 | defaultCodec := api.codecs[0] |
| 2193 | if !defaultCodec.CanEncode(resp) { |
| 2194 | return nil, fmt.Errorf("cannot encode response as %s", defaultCodec.ContentType()) |
| 2195 | } |
| 2196 | |
| 2197 | return defaultCodec, nil |
| 2198 | } |
| 2199 | |
| 2200 | func (api *API) respondError(w http.ResponseWriter, apiErr *apiError, data any) { |
| 2201 | json := jsoniter.ConfigCompatibleWithStandardLibrary |
no test coverage detected