Sha256: 55ce3f7b3c6a39c18221fa694c374c946080ba2cb2e6446225162041954023af

Contents?: true

Size: 1.21 KB

Versions: 4

Compression:

Stored size: 1.21 KB

Contents

# frozen_string_literal: true
require 'drillbit/authorizers/parameters'

module  Drillbit
module  Authorizers
class   Parameters
class   Filtering < Authorizers::Parameters
  def call
    params.permit(*authorized_params)
  end

  private

  def authorized_params
    @authorized_params ||= [
                             :sort,
                             page:   %i{
                                       number
                                       size
                                       offset
                                       limit
                                       cursor
                                     },
                             filter: [
                                       :query,
                                       {},
                                     ],
                           ]
  end

  def add_filterable_parameter(name)
    param = params.fetch(:filter, {}).
                   fetch(name,    nil)

    if param.class == Array
      authorized_params[1][:filter][1][name] = []
    else
      authorized_params[1][:filter] << name
    end
  end

  def add_filterable_parameters(*names)
    names.each do |name|
      add_filterable_parameter(name)
    end
  end
end
end
end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
drillbit-1.1.0 lib/drillbit/authorizers/parameters/filtering.rb
drillbit-1.0.1 lib/drillbit/authorizers/parameters/filtering.rb
drillbit-1.0.0 lib/drillbit/authorizers/parameters/filtering.rb
drillbit-0.0.1 lib/drillbit/authorizers/parameters/filtering.rb