From 151dcc8e74cc17e0097e4b8ecff0b4c44bba4e06 Mon Sep 17 00:00:00 2001 From: Nathan Griffith Date: Mon, 8 Feb 2021 19:33:35 -0500 Subject: [PATCH] Fix issue with non-raised server errors (5XX) In its 1.0 release, Faraday split `Response::RaiseError::ClientErrorStatuses` apart into a second `ServerErrorStatuses` constant. This gem relied on `ClientErrorStatuses` to return `400...600`, but it returns `400...500` instead. This change decouples Plaid's middleware from Faraday's internal constants, such that both pre-1.0 and post-1.0 versions of Faraday should be supported. --- lib/plaid/middleware.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/plaid/middleware.rb b/lib/plaid/middleware.rb index 01165d220..081398b9a 100644 --- a/lib/plaid/middleware.rb +++ b/lib/plaid/middleware.rb @@ -14,10 +14,11 @@ class Middleware < ::Faraday::Response::Middleware # Internal: Default read timeout for HTTP calls in seconds. NETWORK_TIMEOUT = 600 + # Internal: Status codes recognized as client or server errors. + ERROR_STATUSES = 400...600 def on_complete(env) - return unless Faraday::Response::RaiseError::ClientErrorStatuses - .include?(env[:status]) + return unless ERROR_STATUSES.include?(env[:status]) error_class = Plaid::Error.error_from_type(env.body['error_type'])