class Superintendent::Request::ParamsCaseTranslator

Constants

DATA_CASE

Public Class Methods

new(app, opts={}) click to toggle source
# File lib/superintendent/request/params_case_translator.rb, line 5
def initialize(app, opts={})
  @app, @options = app, opts
end

Public Instance Methods

call(env) click to toggle source
# File lib/superintendent/request/params_case_translator.rb, line 9
def call(env)
  request = ActionDispatch::Request.new(env)
  if ['POST', 'PUT', 'PATCH'].include? request.method
    if env.has_key?(DATA_CASE) && env[DATA_CASE] == 'camel-lower'
      request.request_parameters = underscored_keys(request.request_parameters)
    end
  end
  @app.call(env)
end

Private Instance Methods

underscored_key(k) click to toggle source
# File lib/superintendent/request/params_case_translator.rb, line 21
def underscored_key(k)
  k.to_s.underscore
end
underscored_keys(value) click to toggle source
# File lib/superintendent/request/params_case_translator.rb, line 25
def underscored_keys(value)
  case value
  when Array
    value.map { |v| underscored_keys(v) }
  when Hash
    Hash[value.map { |k, v| [underscored_key(k), underscored_keys(v)] }]
  else
    value
  end
end