discourse/lib/freedom_patches/rack_patches.rb
Sam Saffron 30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00

45 lines
959 B
Ruby

# frozen_string_literal: true
# patch https://github.com/rack/rack/pull/600
#
class Rack::ETag
private
def digest_body(body)
parts = []
has_body = false
body.each do |part|
parts << part
has_body ||= part.length > 0
end
hexdigest =
if has_body
digest = Digest::MD5.new
parts.each { |part| digest << part }
digest.hexdigest
end
[hexdigest, parts]
end
end
# patch https://github.com/rack/rack/pull/596
#
class Rack::ConditionalGet
private
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