lib/xeroizer/http.rb in xeroizer-2.15.6 vs lib/xeroizer/http.rb in xeroizer-2.15.7

- old
+ new

@@ -131,20 +131,25 @@ end def handle_oauth_error!(response) error_details = CGI.parse(response.plain_body) description = error_details["oauth_problem_advice"].first + problem = error_details["oauth_problem"].first # see http://oauth.pbworks.com/ProblemReporting # In addition to token_expired and token_rejected, Xero also returns # 'rate limit exceeded' when more than 60 requests have been made in # a second. - case (error_details["oauth_problem"].first) - when "token_expired" then raise OAuth::TokenExpired.new(description) - when "token_rejected" then raise OAuth::TokenInvalid.new(description) - when "rate limit exceeded" then raise OAuth::RateLimitExceeded.new(description) - when error_details["oauth_problem"] then raise OAuth::UnknownError.new(error_details["oauth_problem"].first + ':' + description) - else raise OAuth::UnknownError.new("Xero API may be down or the way OAuth errors are provided by Xero may have changed.") + if problem + case (problem) + when "token_expired" then raise OAuth::TokenExpired.new(description) + when "token_rejected" then raise OAuth::TokenInvalid.new(description) + when "rate limit exceeded" then raise OAuth::RateLimitExceeded.new(description) + when "consumer_key_unknown" then raise OAuth::ConsumerKeyUnknown.new(description) + else raise OAuth::UnknownError.new(problem + ':' + description) + end + else + raise OAuth::UnknownError.new("Xero API may be down or the way OAuth errors are provided by Xero may have changed.") end end def handle_error!(response, request_body)