def parse_fs_url(fs_url):
"""Parse a Filesystem URL and return a `ParseResult`.
Arguments:
fs_url (str): A filesystem URL.
Returns:
~fs.opener.parse.ParseResult: a parse result instance.
Raises:
~fs.errors.ParseError: if the FS URL is not valid.
"""
match = _RE_FS_URL.match(fs_url)
if match is None:
raise ParseError('{!r} is not a fs2 url'.format(fs_url))
fs_name, credentials, url1, url2, path = match.groups()
if credentials:
username, _, password = credentials.partition(':')
username = unquote(username)
password = unquote(password)
url = url1
else:
username = None
password = None
url = url2
url, has_qs, _params = url.partition('?')
resource = unquote(url)
if has_qs:
params = parse_qs(_params, keep_blank_values=True)
params = {k:v[0] for k, v in params.items()}
else:
params = {}
return ParseResult(
fs_name,
username,
password,
resource,
params,
path
)
评论列表
文章目录