class SwaggerShield::BeforeAction

Attributes

shield[R]

Public Class Methods

new(shield) click to toggle source
# File lib/swagger_shield/before_action.rb, line 3
def initialize(shield)
  @shield = shield
end

Public Instance Methods

before(controller) click to toggle source
# File lib/swagger_shield/before_action.rb, line 7
def before(controller)
  request = controller.request
  params = controller.params

  errors = shield.validate(
    request.path,
    request.method,
    params.to_unsafe_h
  )

  unless errors.empty?
    formatted = errors.map { |error|
      {
        status: '422',
        detail: error[:message],
        source: { pointer: error[:fragment] }
      }
    }
    controller.render json: { errors: formatted }, status: :unprocessable_entity
  end
end