Commit daec4769 authored by Joe Gregorio's avatar Joe Gregorio

Added in support for '-location' in httlib2 responses

parent 56a447e1
......@@ -16,7 +16,7 @@ __contributors__ = ["Thomas Broyer (t.broyer@ltgt.net)",
"Jonathan Feinberg",
"Blair Zajac"]
__license__ = "MIT"
__version__ = "$Rev: 208 $"
__version__ = "$Rev: 209 $"
import re
import md5
......@@ -637,6 +637,7 @@ class Http:
response['location'] = urlparse.urljoin(absolute_uri, location)
if response.status == 301 and method in ["GET", "HEAD"]:
response['-x-permanent-redirect-url'] = response['location']
response['-location'] = absolute_uri
_updateCache(headers, response, content, self.cache, cachekey)
if headers.has_key('if-none-match'):
del headers['if-none-match']
......@@ -645,6 +646,7 @@ class Http:
if response.has_key('location'):
location = response['location']
old_response = copy.deepcopy(response)
old_response['-location'] = absolute_uri
redirect_method = ((response.status == 303) and (method not in ["GET", "HEAD"])) and "GET" or method
(response, content) = self.request(location, redirect_method, body=body, headers = headers, redirections = redirections - 1)
response.previous = old_response
......@@ -652,6 +654,7 @@ class Http:
raise RedirectLimit( _("Redirected more times than rediection_limit allows."))
elif response.status in [200, 203] and method == "GET":
# Don't cache 206's since we aren't going to handle byte range requests
response['-location'] = absolute_uri
_updateCache(headers, response, content, self.cache, cachekey)
return (response, content)
......
......@@ -144,7 +144,7 @@ def spiderFeed(feed, only_if_new=0, content=None, resp_headers=None):
# httplib2 was used to get the content, so prepare a
# proper object to pass to feedparser.
f = StringIO(content)
setattr(f, 'url', feed)
setattr(f, 'url', resp_headers.get('-location', feed))
if resp_headers:
if resp_headers.has_key('content-encoding'):
del resp_headers['content-encoding']
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment