Ignore null elements when autopaginating #1703
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.
r? @brandur-stripe
cc @stripe/api-libraries
Okay, so the bug here is a bit convoluted:
data
attribute of a list object are decoded usingStripeObjectConverter
:stripe-dotnet/src/Stripe.net/Entities/StripeList.cs
Lines 20 to 21 in c879198
StripeObjectConverter
returnsnull
:stripe-dotnet/src/Stripe.net/Infrastructure/JsonConverters/StripeObjectConverter.cs
Lines 57 to 58 in c879198
(This was a deliberate design decision, because new object types may be added to the API and older versions of the library should not crash upon encountering them.)
Data
list can containnull
elements. It would be better if those null values were not added to the list at all, but unfortunately I don't think Newtonsoft.Json'sItemConverterType
attribute lets us do thatIHasId
to extract the IDnull
instance fails and throws aNullReferenceException
The fix is fairly simple: just skip over null elements in a page when autopaginating.
Also, for full context, I ran into this because stripe-mock returns a list element with
object=alipay_account
and the library does not have a model for this object type.