class Rack::RemoveBsChar
rack middleware to remove `0x08`(`b`). `0x08` is easily inserted in japanese FEP of Mac OSX.
Public Class Methods
new(app)
click to toggle source
# File lib/rack/remove_bs_char.rb, line 5 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack/remove_bs_char.rb, line 9 def call(env) # form_params unless env["REQUEST_METHOD"] == "GET" || env["REQUEST_METHOD"] == "HEAD" env["rack.input"] = StringIO.new(parse_query(env["rack.input"].read)) env["CONTENT_LENGTH"] = env["rack.input"].length.to_s end # query_params env["QUERY_STRING"] = parse_query(env["QUERY_STRING"]) @app.call(env) end
Private Instance Methods
parse_query(str)
click to toggle source
# File lib/rack/remove_bs_char.rb, line 23 def parse_query(str) return nil unless str new_array = [] str.split("&").each do |param_pair| k, v = param_pair.split("=") k = remove_bs_char(k) if k v = remove_bs_char(v) if v new_array << "#{k}=#{v}" if k end new_array.join("&") end
remove_bs_char(str)
click to toggle source
# File lib/rack/remove_bs_char.rb, line 37 def remove_bs_char(str) ::Rack::Utils.escape(::Rack::Utils.unescape(str).delete("\b")) end