Source code for track.persistence.utils

from urllib.parse import urlparse


[docs]def parse_uri(uri): """Parse a URI and returns a dictionary from it ``scheme:[//authority]path[?query][#fragment]`` with ``authority = [userinfo@]host[:port]`` """ parsed = urlparse(uri) netloc = parsed.netloc arguments = { 'scheme': parsed.scheme, 'path': parsed.path, 'query': parse_options(parsed.query), 'fragment': parsed.fragment, 'params': parsed.params } if netloc: usr_pwd_add_port = netloc.split('@') if len(usr_pwd_add_port) == 2: usr_pwd = usr_pwd_add_port[0].split(':') if len(usr_pwd) == 2: arguments['password'] = usr_pwd[1] arguments['username'] = usr_pwd[0] add_port = usr_pwd_add_port[-1].split(':') if len(add_port) == 2: arguments['port'] = add_port[1] arguments['address'] = add_port[0] return arguments
[docs]def parse_options(options): if not options: return dict() opt = dict() for item in options.split('&'): k, v = item.split('=') opt[k] = v return opt