class Rack::Ketai::Carrier::Abstract::SjisFilter
Public Instance Methods
inbound(env)
click to toggle source
# File lib/egalite/keitai/rack/ketai/carrier/abstract.rb, line 80 def inbound(env) request = Rack::Request.new(env) # 最低でも1回呼んでないと query_string, form_hash等が未設定 request.params # 同一オブジェクトが両方に入ってたりして二重にかかることがあるので converted_objects = [] converter = lambda { |value| unless converted_objects.include?(value) value = NKF.nkf('-m0 -x -Sw', value) converted_objects << value end value } full_apply(request.env["rack.request.query_hash"], request.env["rack.request.form_hash"], &converter) request.env end
outbound(status, headers, body)
click to toggle source
# File lib/egalite/keitai/rack/ketai/carrier/abstract.rb, line 103 def outbound(status, headers, body) if body.is_a?(Array) body = body.collect do |str| NKF.nkf('-m0 -x -Ws', str) end else body = NKF.nkf('-m0 -x -Ws', body) end case headers['Content-Type'] when /charset=(\w+)/i headers['Content-Type'].sub!(/charset=\w+/, 'charset=shift_jis') else headers['Content-Type'] << "; charset=shift_jis" end content = (body.is_a?(Array) ? body[0] : body).to_s headers['Content-Length'] = (content.respond_to?(:bytesize) ? content.bytesize : content.size).to_s if headers.member?('Content-Length') [status, headers, body] end