class BaseCRM::Middlewares::RaiseError

Public Instance Methods

errors_collection(env, error_klass) click to toggle source
# File lib/basecrm/middlewares/raise_error.rb, line 26
def errors_collection(env, error_klass)
  envelope = JSON.parse(env[:body], symbolize_names: true)
  errors = envelope[:errors]
  ErrorsCollection.new(errors.map { |e| error_klass.new(e) }, envelope[:meta])
end
on_complete(env) click to toggle source
# File lib/basecrm/middlewares/raise_error.rb, line 5
def on_complete(env)
  status = env[:status]
  return if (200...300).member?(status)

  content_type = env[:response_headers]['content-type']


  error_klass = case status
  when 422 then BaseCRM::ResourceError
  when 400...500 then BaseCRM::RequestError
  when 500...600 then BaseCRM::ServerError
  end

  if  !content_type.nil? && content_type.include?('json')
    raise errors_collection(env, error_klass)
  else
    error = {:error=>{:code=>status, :message=>"Unknown error occurred."}, :meta=>{}}
    raise error_klass.new(error)
  end
end