Class: ApiParams

Inherits:
Object
  • Object
show all
Defined in:
lib/generators/propel_facets/templates/lib/api_params.rb

Overview

Helps manipulating client parameters for our API

Constant Summary collapse

CMDLINE_AGENTS =
%w[httpie curl].freeze

Instance Method Summary collapse

Constructor Details

#initialize(params, request = nil) ⇒ ApiParams

Returns a new instance of ApiParams.



7
8
9
10
11
12
13
14
# File 'lib/generators/propel_facets/templates/lib/api_params.rb', line 7

def initialize(params, request = nil)
  @params = if params.is_a? ActionController::Parameters
              params
            else
              ActionController::Parameters.new(params)
            end
  @user_agent = request&.user_agent
end

Instance Method Details

#command_line_agent ⇒ Object



40
41
42
43
# File 'lib/generators/propel_facets/templates/lib/api_params.rb', line 40

def command_line_agent
  agent = @user_agent&.downcase
  CMDLINE_AGENTS.any? ->(prefix) { agent&.start_with? prefix }
end

#force_permit(key) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/generators/propel_facets/templates/lib/api_params.rb', line 24

def force_permit(key)
  if !@params.include?(:data) && command_line_agent
    @params[key].permit!
  else
    if @params[:data][key].is_a?(Array) # for nested attributes
      @params[:data][key].each do |field|
        field.permit!
      end
    else
      @params[:data][key].permit!
    end
  end
end

#permit(params) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/generators/propel_facets/templates/lib/api_params.rb', line 16

def permit(params)
  if !@params.include?(:data) && command_line_agent
    @params.permit params
  else
    @params.require(:data).permit(params)
  end
end