rfeedparser 0.9.93 → 0.9.931
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rfeedparser.rb +9 -26
- metadata +1 -1
data/lib/rfeedparser.rb
CHANGED
@@ -56,7 +56,7 @@ include FeedParserUtilities
|
|
56
56
|
|
57
57
|
|
58
58
|
module FeedParser
|
59
|
-
Version = "0.9.
|
59
|
+
Version = "0.9.931"
|
60
60
|
|
61
61
|
License = """Copyright (c) 2002-2006, Mark Pilgrim, All rights reserved.
|
62
62
|
|
@@ -151,7 +151,7 @@ module FeedParser
|
|
151
151
|
result['feed'] = FeedParserDict.new
|
152
152
|
result['entries'] = []
|
153
153
|
if options[:modified]
|
154
|
-
options[:modified] = Time.parse(options[:modified]).rfc2822
|
154
|
+
options[:modified] = Time.parse(options[:modified]).utc.rfc2822
|
155
155
|
# FIXME this ignores all of our time parsing work. Does it matter?
|
156
156
|
end
|
157
157
|
result['bozo'] = false
|
@@ -188,31 +188,13 @@ module FeedParser
|
|
188
188
|
data = ''
|
189
189
|
f = nil
|
190
190
|
end
|
191
|
-
|
192
|
-
|
193
|
-
result['
|
194
|
-
result['modified'] = options[:modified] || f.last_modified
|
191
|
+
if f.respond_to?(:meta)
|
192
|
+
result['etag'] = f.meta['etag']
|
193
|
+
result['modified'] = f.meta['modified']
|
195
194
|
result['url'] = f.base_uri.to_s
|
196
195
|
result['status'] = f.status[0] || 200
|
197
196
|
result['headers'] = f.meta
|
198
|
-
result['headers']['content-location'] ||= options[:content_location] unless options[:content_location].nil?
|
199
|
-
result['headers']['content-language'] ||= options[:content_language] unless options[:content_language].nil?
|
200
|
-
result['headers']['content-type'] ||= options[:content_type] unless options[:content_type].nil?
|
201
|
-
end
|
202
|
-
rescue NoMethodError
|
203
|
-
result['headers'] = {}
|
204
|
-
result['etag'] = result['headers']['etag'] = options[:etag] unless options[:etag].nil?
|
205
|
-
result['modified'] = result['headers']['last-modified'] = options[:modified] unless options[:modified].nil?
|
206
|
-
unless options[:content_location].nil?
|
207
|
-
result['headers']['content-location'] = options[:content_location]
|
208
|
-
end
|
209
|
-
unless options[:content_language].nil?
|
210
|
-
result['headers']['content-language'] = options[:content_language]
|
211
197
|
end
|
212
|
-
unless options[:content_type].nil?
|
213
|
-
result['headers']['content-type'] = options[:content_type]
|
214
|
-
end
|
215
|
-
end
|
216
198
|
|
217
199
|
|
218
200
|
# there are four encodings to keep track of:
|
@@ -220,12 +202,12 @@ module FeedParser
|
|
220
202
|
# - xml_encoding is the encoding declared in the <?xml declaration
|
221
203
|
# - sniffed_encoding is the encoding sniffed from the first 4 bytes of the XML data
|
222
204
|
# - result['encoding'] is the actual encoding, as per RFC 3023 and a variety of other conflicting specifications
|
223
|
-
http_headers = result['headers']
|
205
|
+
http_headers = result['headers'] || {}
|
224
206
|
result['encoding'], http_encoding, xml_encoding, sniffed_xml_encoding, acceptable_content_type =
|
225
207
|
self.getCharacterEncoding(f,data)
|
226
208
|
|
227
|
-
if not http_headers.
|
228
|
-
|
209
|
+
if not http_headers.blank? and not acceptable_content_type
|
210
|
+
unless http_headers['content-type'].nil?
|
229
211
|
bozo_message = "#{http_headers['content-type']} is not an XML media type"
|
230
212
|
else
|
231
213
|
bozo_message = 'no Content-type specified'
|
@@ -234,6 +216,7 @@ module FeedParser
|
|
234
216
|
result['bozo_exception'] = NonXMLContentType.new(bozo_message) # I get to care about this, cuz Mark says I should.
|
235
217
|
end
|
236
218
|
result['version'], data = self.stripDoctype(data)
|
219
|
+
|
237
220
|
baseuri = http_headers['content-location'] || result['href']
|
238
221
|
baselang = http_headers['content-language']
|
239
222
|
|