class Userbin::Request::Middleware::JSONParser

Public Instance Methods

on_complete(env) click to toggle source
# File lib/userbin/request.rb, line 120
def on_complete(env)
  response = if env[:body].nil? || env[:body].empty?
    {}
  else
    begin
      MultiJson.load(env[:body], :symbolize_keys => true)
    rescue MultiJson::LoadError
      raise Userbin::ApiError, 'Invalid response from Userbin API'
    end
  end

  case env[:status]
  when 200..299
    # OK
  when 400
    raise Userbin::BadRequestError, response[:message]
  when 401
    raise Userbin::UnauthorizedError, response[:message]
  when 403
    raise Userbin::ForbiddenError, response[:message]
  when 404
    raise Userbin::NotFoundError, response[:message]
  when 419
    # session token is invalid so clear it
    RequestStore.store[:userbin].session_token = nil

    raise Userbin::UserUnauthorizedError, response[:message]
  when 422
    raise Userbin::InvalidParametersError, response[:message]
  else
    raise Userbin::ApiError, response[:message]
  end

  env[:body] = {
    data: response,
    metadata: [],
    errors: {}
  }
end