square / square-ruby-sdk

Ruby client library for the Square API
https://developer.squareup.com/docs
Other
69 stars 42 forks source link

Connection failure raises "TypeError: Server responded with invalid JSON" #101

Open ivanbrennan opened 2 years ago

ivanbrennan commented 2 years ago

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

wolfadex commented 2 years ago

Thank you for your feedback @ivanbrennan. Improved error messages is something we have on our roadmap for 2022.

dawoodmalhi commented 1 year ago

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.

pelletencate commented 2 months ago

Hey @wolfadex, any update on this? We just got this exact exception on various occasions where the Square API returns a HTML page instead of a valid JSON response. Last time I've seen it was a very normal request that we were able to replay without any problems (finding a Square gift card by GAN)

zenmasterjobo commented 2 months ago

hi @pelletencate - which version of the ruby SDK are you using?