Sha256: a12cd62890ac47f98180a7e518628edbf1b0f47106092c076166b1520cfe844b
Contents?: true
Size: 1.16 KB
Versions: 3
Compression:
Stored size: 1.16 KB
Contents
# リクエストパラメータの変換 module Jpmobile class ParamsFilter def initialize(app) @app = app end def call(env) # 入力 if (@mobile = env['rack.jpmobile']) && @mobile.apply_params_filter? # パラメータをkey, valueに分解 # form_params unless env['REQUEST_METHOD'] == 'GET' || env['REQUEST_METHOD'] == 'HEAD' unless env['CONTENT_TYPE'].match?(%r{application/json|application/xml}) env['rack.input'] = StringIO.new(parse_query(env['rack.input'].read)) end end # query_params env['QUERY_STRING'] = parse_query(env['QUERY_STRING']) end status, env, body = @app.call(env) [status, env, body] end private def to_internal(str) ::Rack::Utils.escape(@mobile.to_internal(::Rack::Utils.unescape(str))) end def parse_query(str) return nil unless str new_array = [] str.split('&').each do |param_pair| k, v = param_pair.split('=') k = to_internal(k) if k v = to_internal(v) if v new_array << "#{k}=#{v}" if k end new_array.join('&') end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
jpmobile-5.2.2 | lib/jpmobile/rack/params_filter.rb |
jpmobile-5.2.1 | lib/jpmobile/rack/params_filter.rb |
jpmobile-5.2.0 | lib/jpmobile/rack/params_filter.rb |