fix(gateway): JSON when Accept is a list #9533
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes #9520 by adding basic support for
Accept
headers with a list of content types (pick the first matching one).cc @hacdias if you have time to eyeball – would like to include this in 0.18.
Context
Block/CAR responses introduced in #8758 always had single explicit type, and we did not bother with implementing/testing lists.
With the introduction of JSON added in #9335 (Kubo 0.18) people started passing a list, as noted in #9520.
Note: this PR does not implement weights because afaik golang still does not include this in standard library, and I wanted to avoid adding dependency like https://github.com/aohorodnyk/mimeheader. Returning the first match should be good enough for now, as we don't have a use case where the user would like to mix CAR and JSON.
Closes #9520