lib/bearcat/client.rb in bearcat-1.5.3 vs lib/bearcat/client.rb in bearcat-1.5.4

- old
+ new

@@ -30,10 +30,16 @@ connection.send(method, &block) end ApiArray.process_response(response, self) end + def set_connection(config) + super + connection.builder.insert(Footrest::RaiseFootrestErrors, ExtendedRaiseFootrestErrors) + connection.builder.delete(Footrest::RaiseFootrestErrors) + end + protected def rate_limited_request return yield unless rate_limiter @@ -97,8 +103,17 @@ private def rate_limit_key Digest::SHA1.hexdigest(config[:token]) + end + end + + # Overridden response error middleware that, if an error code doesn't map to an exception, raises a more generic exception + class ExtendedRaiseFootrestErrors < Footrest::RaiseFootrestErrors + def on_complete(response) + super + key = response[:status].to_i + raise ERROR_MAP[key.floor(-2)], response if key >= 400 end end end