summaryrefslogtreecommitdiff
path: root/lib/webrick/httputils.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/webrick/httputils.rb')
-rw-r--r--lib/webrick/httputils.rb25
1 files changed, 21 insertions, 4 deletions
diff --git a/lib/webrick/httputils.rb b/lib/webrick/httputils.rb
index bae281ca1a..18e3e25887 100644
--- a/lib/webrick/httputils.rb
+++ b/lib/webrick/httputils.rb
@@ -115,10 +115,9 @@ module WEBrick
module_function :load_mime_types
def mime_type(filename, mime_tab)
- if suffix = (/\.(\w+)$/ =~ filename && $1)
- mtype = mime_tab[suffix.downcase]
- end
- mtype || "application/octet-stream"
+ suffix1 = (/\.(\w+)$/ =~ filename && $1.downcase)
+ suffix2 = (/\.(\w+)\.[\w\-]+$/ =~ filename && $1.downcase)
+ mime_tab[suffix1] || mime_tab[suffix2] || "application/octet-stream"
end
module_function :mime_type
@@ -175,6 +174,24 @@ module WEBrick
end
module_function :parse_range_header
+ def parse_qvalues(value)
+ tmp = []
+ if value
+ parts = value.split(/,\s*/)
+ parts.each {|part|
+ if m = %r{^([^\s,]+?)(?:;\s*q=([\d]+(?:\.[\d]+)))?$}.match(part)
+ lang = m[1]
+ q = (m[2] or 1).to_f
+ tmp.push([lang, q])
+ end
+ }
+ tmp = tmp.sort_by{|lang, q| -q}
+ tmp.collect!{|lang, q| lang}
+ end
+ return tmp
+ end
+ module_function :parse_qvalues
+
#####
def dequote(str)