Do HTTP redirects with HEAD too, urllib2 appears to reset them to GET.

git-svn-id: svn+ssh://rpmlint.zarb.org/home/projects/rpmlint/svn/trunk@1706 9bc8b190-ac0f-0410-8968-dc7d1f502856
This commit is contained in:
Ville Skyttä 2010-01-20 19:32:58 +00:00
parent e4e259217b
commit 3a35467d64
1 changed files with 8 additions and 1 deletions

View File

@ -21,6 +21,12 @@ macro_regex = re.compile('%+[{(]?\w+[)}]?')
class _HeadRequest(urllib2.Request):
def get_method(self):
return "HEAD"
class _HeadRedirectHandler(urllib2.HTTPRedirectHandler):
def redirect_request(*args):
res = urllib2.HTTPRedirectHandler.redirect_request(*args)
if res:
res = _HeadRequest(res.get_full_url())
return res
class AbstractCheck:
known_checks = {}
@ -49,7 +55,8 @@ class AbstractCheck:
socket.setdefaulttimeout(self.network_timeout)
res = err = None
try:
res = urllib2.urlopen(_HeadRequest(url))
opener = urllib2.build_opener(_HeadRedirectHandler())
res = opener.open(_HeadRequest(url))
except Exception, e:
printWarning(pkg, 'invalid-url', '%s:' % tag, url, e)
res and res.close()