Class: FinAppsCore::Middleware::RaiseError

Inherits:
Faraday::Response::Middleware
  • Object
show all
Defined in:
lib/finapps_core/middleware/response/raise_error.rb

Overview

:nodoc:

Constant Summary collapse

SUCCESS_STATUSES =
(200..299).freeze
API_UNAUTHENTICATED =
401
FORBIDDEN =
403
CONNECTION_FAILED_STATUS =
407
API_SESSION_TIMEOUT =
419
LOCKOUT_MESSAGE =
'account is locked'

Instance Method Summary collapse

Instance Method Details

#on_complete(env) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/finapps_core/middleware/response/raise_error.rb', line 16

def on_complete(env)
  return if SUCCESS_STATUSES.include?(env[:status])

  raise(FinAppsCore::ApiUnauthenticatedError, 'API Invalid Session') if env[:status] == API_UNAUTHENTICATED
  raise(FinAppsCore::ApiSessionTimeoutError, 'API Session Timed out') if env[:status] == API_SESSION_TIMEOUT
  raise(FinAppsCore::ConnectionFailedError, 'Connection Failed') if env[:status] == CONNECTION_FAILED_STATUS
  raise(FinAppsCore::UserLockoutError, 'User is Locked') if user_is_locked?(env)

  raise(Faraday::Error::ClientError, response_values(env))
end

#response_values(env) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/finapps_core/middleware/response/raise_error.rb', line 27

def response_values(env)
  {
    status: env.status,
    headers: env.response_headers,
    body: env.body,
    error_messages: error_messages(env.body)
  }
end