Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
executable file 51 lines (46 sloc) 1.83 KB
# This software code is made available "AS IS" without warranties of any
# kind. You may copy, display, modify and redistribute the software
# code either by itself or as incorporated into your code; provided that
# you do not remove any proprietary notices. Your use of this software
# code is at your own risk and you waive any claim against the author
# with respect to your use of this software code.
# (c) 2007 s3sync.net
#
# The purpose of this file is to overlay the cgi class
# to add some functionality
# (without changing the file itself or requiring a specific version)
# It still isn't perfectly robust, i.e. if radical changes are made
# to the underlying lib this stuff will need updating.
require 'cgi'
require 'iconv' # for UTF-8 conversion
# thanks to http://www.redhillconsulting.com.au/blogs/simon/archives/000326.html
module S3ExtendCGI
def self.included(base)
base.extend(ClassMethods)
base.class_eval do
class << self
alias_method :S3Extend_escape_orig, :escape unless method_defined?(:S3Extend_escape_orig)
alias_method :escape, :S3Extend_escape
end
end
end
module ClassMethods
@@exemptSlashesInEscape = false
attr_writer :exemptSlashesInEscape
@@usePercent20InEscape = false
attr_writer :usePercent20InEscape
@@nativeCharacterEncoding = "ISO-8859-1"
attr_writer :nativeCharacterEncoding
@@useUTF8InEscape = false
attr_writer :useUTF8InEscape
def S3Extend_escape(string)
result = string
result = Iconv.iconv("UTF-8", @nativeCharacterEncoding, string).join if @useUTF8InEscape
result = S3Extend_escape_orig(result)
result.gsub!(/%2f/i, "/") if @exemptSlashesInEscape
result.gsub!("+", "%20") if @usePercent20InEscape
result
end
end
end
CGI.send(:include, S3ExtendCGI)