-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathquad_class.py
More file actions
37 lines (28 loc) · 1.02 KB
/
Copy pathquad_class.py
File metadata and controls
37 lines (28 loc) · 1.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import urllib.parse
from collections import namedtuple
QuadData = namedtuple('QuadData', ['quad_url', 'quad_host', 'scheme_host'])
def make_quad(url):
parts = urllib.parse.urlsplit(url)
host = parts.hostname
# keeps the port
url_tuple = (parts.scheme, parts.netloc, "", "", "")
scheme_host = urllib.parse.urlunsplit(url_tuple)
if host.startswith('www.'):
# this is a cheat, but we probably don't care about 'www.com'
host = '^' + host
host = host.replace('^www.', '', 1).replace('^', '')
# keeps the port
# XXX consider normalizing https plus :443 or http plus :80
new_netloc = parts.netloc.replace(parts.hostname, host, 1)
url_tuple = ('quad', new_netloc, "", "", "")
quad_host = urllib.parse.urlunsplit(url_tuple)
modified = parts._replace(
scheme='quad',
netloc=new_netloc,
)
quad_url = urllib.parse.urlunsplit(modified)
return QuadData(
quad_url=quad_url,
quad_host=quad_host,
scheme_host=scheme_host,
)