urlybird

Common url operations not covered by the standard library urllib
git clone git://git.defalsify.org/python-urlybird.git
Log | Files | Refs | LICENSE

host.py (1020B)


      1 # standard imports
      2 from socket import getservbyname
      3 import urllib.parse
      4 
      5 
      6 def url_apply_port(url_parts, as_origin=False):
      7     url_parts_origin_host = url_parts[1].split(":")
      8     host = url_parts_origin_host[0]
      9     port = None
     10     try:
     11         port = ':' + url_parts_origin_host[1]
     12     except IndexError:
     13         port = ':' + str(getservbyname(url_parts[0]))
     14         #logg.info('changed origin with missing port number from {} to {}'.format(url_parts[1], host))
     15     host += port
     16     path = ''
     17     query = ''
     18     fragment = ''
     19     if not as_origin:
     20         path=url_parts[2]
     21         query=url_parts[3]
     22         fragment=url_parts[4]
     23 
     24     return urllib.parse.SplitResult(
     25             scheme=url_parts[0],
     26             netloc=host,
     27             path=path,
     28             query=query,
     29             fragment=fragment,
     30             )
     31 
     32 
     33 def url_apply_port_string(url_string, as_origin=False):
     34     url_parts = urllib.parse.urlsplit(url_string)
     35     u = url_apply_port(url_parts, as_origin=as_origin)
     36     return urllib.parse.urlunsplit(u)