Sha256: 7043c18946270dd2df8d6e3838e547d0d639774ab797579cf4ec301e2d6f5648

Contents?: true

Size: 473 Bytes

Versions: 1

Compression:

Stored size: 473 Bytes

Contents

require 'cgi'

module InvalidUTF8Rejector
  class Middleware
    def initialize(app)
      @app = app
    end

    def call(env)
      if request_uri_clean?(env)
        @app.call(env)
      else
        [400, {}, [""]]
      end
    end

    private

    def request_uri_clean?(env)
      clean_utf8?(env["PATH_INFO"]) and clean_utf8?(env["QUERY_STRING"])
    end

    def clean_utf8?(str)
      CGI.unescape(str).force_encoding('UTF-8').valid_encoding?
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
invalid_utf8_rejector-0.0.1 lib/invalid_utf8_rejector/middleware.rb