Don't automatically unbox vectors when making requests. #173
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.
When upgrading to httr2, I rewrote some of the http client code and forgot to keep the
auto_unbox = FALSE
flag. This has caused uploads to outpack_server to break, as requests were now malformed.The issue is that it is ambiguous whether
list(x = 1)
should be serialized as{"x": 1}
or as{"x": [ 1 ]}
, because R does not differentiate between scalar and vectors of length one.By default, httr2 applies
auto_unbox = TRUE
, which leads to all length 1 vectors being unboxed into a JSON scalar. By explictly choosing setting that flag toFALSE
, we may override this behaviour and keep all vectors as vectors by default. Scalars need to be marked as such with thescalar(x)
function (defined asjsonlite::unbox(x)
).Frustratingly this did not get caught by our testsuite because we were always pushing more than one packet at a time. I've added a test for this particular case, pushing one packet and one file, to make sure regressions don't get introduced in the future.