1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Downloader: accept some RFC 2616 noncompliant dates

This commit is contained in:
Nobuyoshi Nakada 2021-09-13 01:08:56 +09:00
parent 6257090496
commit c8a1e57af0
No known key found for this signature in database
GPG key ID: 7CD2805BFA3770C6

View file

@ -130,6 +130,21 @@ class Downloader
options options
end end
def self.httpdate(date)
Time.httpdate(date)
rescue ArgumentError => e
# Some hosts (e.g., zlib.net) return similar to RFC 850 but 4
# digit year, sometimes.
/\A\s*
(?:Mon|Tues|Wednes|Thurs|Fri|Satur|Sun)day,\x20
(\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{4})\x20
(\d\d):(\d\d):(\d\d)\x20
GMT
\s*\z/ix =~ date or raise
warn e.message
Time.utc($3, $2, $1, $4, $5, $6)
end
# Downloader.download(url, name, [dir, [since]]) # Downloader.download(url, name, [dir, [since]])
# #
# Update a file from url if newer version is available. # Update a file from url if newer version is available.
@ -231,7 +246,7 @@ class Downloader
mtime = data.meta["last-modified"] mtime = data.meta["last-modified"]
end end
if mtime if mtime
mtime = Time.httpdate(mtime) mtime = httpdate(mtime)
dest.utime(mtime, mtime) dest.utime(mtime, mtime)
end end
if $VERBOSE if $VERBOSE