Source code for wolframclient.utils.url
# -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, unicode_literals
from wolframclient.utils import six
[docs]def url_join(*fragments):
""" Join fragments of a URL, dealing with slashes."""
if len(fragments) == 0:
return ""
buff = []
for fragment in fragments:
stripped = fragment.strip("/")
if len(stripped) > 0:
buff.append(stripped)
buff.append("/")
last = fragments[-1]
# add a trailing '/' if present.
if len(last) > 0 and last[-1] != "/":
buff.pop()
return "".join(buff)
[docs]def evaluation_api_url(server):
return url_join(server.cloudbase, "evaluations?_responseform=wxf")
[docs]def user_api_url(server, api):
"""Build an API URL from a user name and an API id. """
if isinstance(api, tuple) or isinstance(api, list):
if len(api) == 2:
return url_join(server.cloudbase, "objects", api[0], api[1])
else:
raise ValueError(
"Target api specified as a tuple must have two elements: the user name, the API name."
)
elif isinstance(api, six.string_types):
return api
else:
raise ValueError("Invalid API description. Expecting string or tuple.")