Sha256: 5eb7262e90681025f0691512d9fe28b875d1c43c011cff08932c778867ad42d1
Contents?: true
Size: 977 Bytes
Versions: 11
Compression:
Stored size: 977 Bytes
Contents
# frozen_string_literal: true module Uploadcare module Concerns # Wrapper for responses # raises errors instead of returning monads module UploadErrorHandler include Exception # Extension of ApiStruct's failure method # # Raises errors instead of returning falsey objects # @see https://github.com/rubygarage/api_struct/blob/master/lib/api_struct/client.rb#L55 def failure(response) catch_throttling_error(response) parsed_response = JSON.parse(response.body.to_s) raise RequestError, parsed_response['detail'] rescue JSON::ParserError raise RequestError, response.status end private def catch_throttling_error(response) return unless response.code == 429 retry_after = (response.headers['Retry-After'].to_i + 1) || 11 raise ThrottleError.new(retry_after), "Response throttled, retry #{retry_after} seconds later" end end end end
Version data entries
11 entries across 11 versions & 1 rubygems