File tree Expand file tree Collapse file tree 2 files changed +19
-3
lines changed Expand file tree Collapse file tree 2 files changed +19
-3
lines changed Original file line number Diff line number Diff line change @@ -318,7 +318,7 @@ def content_type
318
318
def []( header_name )
319
319
if @header
320
320
value = @header [ header_name . downcase ]
321
- value . empty? ? nil : value . join ( ", " )
321
+ value . empty? ? nil : value . join
322
322
end
323
323
end
324
324
@@ -329,7 +329,7 @@ def each
329
329
if @header
330
330
@header . each { |k , v |
331
331
value = @header [ k ]
332
- yield ( k , value . empty? ? nil : value . join ( ", " ) )
332
+ yield ( k , value . empty? ? nil : value . join )
333
333
}
334
334
end
335
335
end
Original file line number Diff line number Diff line change @@ -152,6 +152,22 @@ def mime_type(filename, mime_tab)
152
152
# Parses an HTTP header +raw+ into a hash of header fields with an Array
153
153
# of values.
154
154
155
+ class SplitHeader < Array
156
+ def join ( separator = ", " )
157
+ super
158
+ end
159
+ end
160
+
161
+ class CookieHeader < Array
162
+ def join ( separator = "; " )
163
+ super
164
+ end
165
+ end
166
+
167
+ HEADER_CLASSES = Hash . new ( SplitHeader ) . update ( {
168
+ "cookie" => CookieHeader ,
169
+ } )
170
+
155
171
def parse_header ( raw )
156
172
header = Hash . new ( [ ] . freeze )
157
173
field = nil
@@ -160,7 +176,7 @@ def parse_header(raw)
160
176
when /^([A-Za-z0-9!\# $%&'*+\- .^_`|~]+):(.*?)\z /om
161
177
field , value = $1, $2. strip
162
178
field . downcase!
163
- header [ field ] = [ ] unless header . has_key? ( field )
179
+ header [ field ] = HEADER_CLASSES [ field ] . new unless header . has_key? ( field )
164
180
header [ field ] << value
165
181
when /^\s +(.*?)/om
166
182
value = line . strip
You can’t perform that action at this time.
0 commit comments