Fix encoding of nested parameters in multipart requests #624
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.
r? @brandur-stripe @remi-stripe
cc @stripe/api-libraries
For multipart requests, we don't encode the parameters ourselves and instead pass them directly to curl:
stripe-php/lib/HttpClient/CurlClient.php
Line 194 in d14f02d
However, curl doesn't know how to encode arrays and encodes them as
Array
regardless of their contents. For instance this request:would be encoded as:
which of course causes the request to fail.
This PR fixes this by manually flattening the parameters before passing them to curl. It's unfortunately difficult to write tests for this because we can't mock curl, but I've verified that requests are encoded correctly even with deeply nested parameters. E.g. with this patch, the following request:
is encoded as: