Sha256: 0d7a99ebe4c56323bb3e72a26a6fe87e2aac970ed754249a1ccb317e93429f56

Contents?: true

Size: 1.21 KB

Versions: 15

Compression:

Stored size: 1.21 KB

Contents

require 'nkf'
# On au SSL pages, only Shift-JIS encoding is supported by some handsets, so pages will be reencoded.
module Galakei::Filter::Recode
  # :stopdoc:
  def self.condition?(c)
    c.request.ssl? && c.request.au?
  end

  class Params < Galakei::Filter::Base
    def filter
      Rails.logger.debug("[galakei] AU handset over SSL detected, recoding everything to Shift_JIS")
      deep_apply(controller.params) do |param|
        NKF.nkf('-Sw', param)
      end
    end

    private
    def deep_apply(obj, &proc)
      case obj
      when Hash
        obj.each_pair do |key, value|
          obj[key] = deep_apply(value, &proc)
        end
      when Array
        obj.collect!{|value| deep_apply(value, &proc)}
      when String
        obj = obj.to_param if obj.respond_to?(:to_param)
        proc.call(obj)
      else
        # NilClass, TrueClass, FalseClass, Tempfile, StringIO, etc...
        return obj
      end
    end

  end

  class Response < Galakei::Filter::Base
    def filter
      doc = Nokogiri::HTML(response.body)
      response.body = doc.serialize(:encoding => 'Shift_JIS')
      response.body = Galakei::EmojiTable.au_utf8_to_sjis(response.body)
      response.charset = "Shift_JIS"
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
galakei-0.15.2 lib/galakei/filter/recode.rb
galakei-0.15.1 lib/galakei/filter/recode.rb
galakei-0.15.0 lib/galakei/filter/recode.rb
galakei-0.14.4 lib/galakei/filter/recode.rb
galakei-0.14.3 lib/galakei/filter/recode.rb
galakei-0.14.2 lib/galakei/filter/recode.rb
galakei-0.14.1 lib/galakei/filter/recode.rb
galakei-0.14.0 lib/galakei/filter/recode.rb
galakei-0.13.7 lib/galakei/filter/recode.rb
galakei-0.13.6 lib/galakei/filter/recode.rb
galakei-0.13.5 lib/galakei/filter/recode.rb
galakei-0.13.4 lib/galakei/filter/recode.rb
galakei-0.13.3 lib/galakei/filter/recode.rb
galakei-0.13.2 lib/galakei/filter/recode.rb
galakei-0.13.1 lib/galakei/filter/recode.rb