discourse/lib/freedom_patches/rack_patches.rb

45 lines
959 B
Ruby
Raw Normal View History

# frozen_string_literal: true
# patch https://github.com/rack/rack/pull/600
#
class Rack::ETag
private
2018-06-07 13:28:18 +08:00
def digest_body(body)
parts = []
has_body = false
2018-06-07 13:28:18 +08:00
body.each do |part|
parts << part
has_body ||= part.length > 0
end
2018-06-07 13:28:18 +08:00
hexdigest =
if has_body
digest = Digest::MD5.new
parts.each { |part| digest << part }
digest.hexdigest
end
2018-06-07 13:28:18 +08:00
[hexdigest, parts]
end
end
# patch https://github.com/rack/rack/pull/596
#
class Rack::ConditionalGet
private
2018-06-07 13:28:18 +08:00
def to_rfc2822(since)
# shortest possible valid date is the obsolete: 1 Nov 97 09:55 A
# anything shorter is invalid, this avoids exceptions for common cases
# most common being the empty string
if since && since.length >= 16
# NOTE: there is no trivial way to write this in a non execption way
# _rfc2822 returns a hash but is not that usable
Time.rfc2822(since) rescue nil
else
nil
end
end
end