class Contactually::Middleware::ErrorDetector

Public Instance Methods

call(env) click to toggle source
# File lib/contactually/middleware/error_detector.rb, line 5
def call(env)
  @app.call(env).on_complete do |env|
    unless (200..299).include? env[:status]
      cast_error(env[:body])
    end
  end
end

Private Instance Methods

cast_error(body) click to toggle source
# File lib/contactually/middleware/error_detector.rb, line 15
def cast_error(body)
  case JSON.parse(body)['error']
  when /^Invalid parameters/ then
    raise InvalidParametersError, body
  when /^We already have/ then
    raise DuplicatedContactError, body
  when /^You need to sign in/ then
    raise AuthenticationError, body
  else
    raise APIError, body
  end
rescue JSON::ParserError
  raise APIError, body
end