mirror of
https://github.com/python/cpython.git
synced 2025-08-28 20:56:54 +00:00
Merged revisions 80101 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r80101 | senthil.kumaran | 2010-04-16 08:16:46 +0530 (Fri, 16 Apr 2010) | 3 lines Fix issue2987: RFC2732 support for urlparse (IPv6 addresses) ........
This commit is contained in:
parent
b213ee33c0
commit
ad02d239ff
3 changed files with 57 additions and 12 deletions
|
@ -70,22 +70,26 @@ class ResultMixin(object):
|
|||
|
||||
@property
|
||||
def hostname(self):
|
||||
netloc = self.netloc
|
||||
if "@" in netloc:
|
||||
netloc = netloc.rsplit("@", 1)[1]
|
||||
if ":" in netloc:
|
||||
netloc = netloc.split(":", 1)[0]
|
||||
return netloc.lower() or None
|
||||
netloc = self.netloc.split('@')[-1]
|
||||
if '[' in netloc and ']' in netloc:
|
||||
return netloc.split(']')[0][1:].lower()
|
||||
elif '[' in netloc or ']' in netloc:
|
||||
raise ValueError("Invalid IPv6 hostname")
|
||||
elif ':' in netloc:
|
||||
return netloc.split(':')[0].lower()
|
||||
elif netloc == '':
|
||||
return None
|
||||
else:
|
||||
return netloc.lower()
|
||||
|
||||
@property
|
||||
def port(self):
|
||||
netloc = self.netloc
|
||||
if "@" in netloc:
|
||||
netloc = netloc.rsplit("@", 1)[1]
|
||||
if ":" in netloc:
|
||||
port = netloc.split(":", 1)[1]
|
||||
netloc = self.netloc.split('@')[-1].split(']')[-1]
|
||||
if ':' in netloc:
|
||||
port = netloc.split(':')[1]
|
||||
return int(port, 10)
|
||||
return None
|
||||
else:
|
||||
return None
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
|
@ -130,6 +134,10 @@ def _splitparams(url):
|
|||
|
||||
def _splitnetloc(url, start=0):
|
||||
delim = len(url) # position of end of domain part of url, default is end
|
||||
if '[' in url: # check for invalid IPv6 URL
|
||||
if not ']' in url: raise ValueError("Invalid IPv6 URL")
|
||||
elif ']' in url:
|
||||
if not '[' in url: raise ValueError("Invalid IPv6 URL")
|
||||
for c in '/?#': # look for delimiters; the order is NOT important
|
||||
wdelim = url.find(c, start) # find first of this delim
|
||||
if wdelim >= 0: # if found
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue