square-ruby-sdk
square-ruby-sdk copied to clipboard
Connection failure raises "TypeError: Server responded with invalid JSON"
Describe the bug Occasionally, an API request fails due to an intermittent network error, and the SDK raises a TypeError when attempting to parse the error response as JSON. An example error I've observed had the following response body:
upstream connect error or disconnect/reset before headers. reset reason: connection failure
Expected behavior I'm not sure how best to handle this scenario, but I think raising a more semantically-meaningful error would be preferable, as that would help clients implement reasonable error-handling.
To Reproduce Because this is caused by intermittent network failures, I'm not sure how to reliably reproduce the issue.
Backtrace Here's an extract from the backtrace of such an error:
/gems/square.rb-19.0.0.20220420/lib/square/api_helper.rb:130 in rescue in json_deserialize
/gems/square.rb-19.0.0.20220420/lib/square/api_helper.rb:127 in json_deserialize
/gems/square.rb-19.0.0.20220420/lib/square/api/cards_api.rb:58 in list_cards
Caused by JSON::ParserError: 783: unexpected token at 'upstream connect error or disconnect/reset before headers. reset reason: connection failure'
Square SDK version 19.0.0.20220420
Thank you for your feedback @ivanbrennan. Improved error messages is something we have on our roadmap for 2022.
I have also encountered the same error while making the complete_payment API call with payment_id as nil. Just want to know, Is it going to be handled in near future.