Source code for oras.utils.request
__author__ = "Vanessa Sochat"
__copyright__ = "Copyright The ORAS Authors."
__license__ = "Apache-2.0"
import os
import urllib.parse as urlparse
from urllib.parse import urlencode
[docs]
def iter_localhosts(name: str):
"""
Given a url with localhost, always resolve to 127.0.0.1.
:param name : the name of the original host string
:type name: str
"""
names = [name]
if "localhost" in name:
names.append(name.replace("localhost", "127.0.0.1"))
elif "127.0.0.1" in name:
names.append(name.replace("127.0.0.1", "localhost"))
for name in names:
yield name
[docs]
def find_docker_config(exists: bool = True):
"""
Return the docker default config path.
"""
path = os.path.expanduser("~/.docker/config.json")
# Allow the caller to request the path regardless of existing
if os.path.exists(path) or not exists:
return path
[docs]
def append_url_params(url: str, params: dict) -> str:
"""
Given a dictionary of params and a url, parse the url and add extra params.
:param url: the url string to parse
:type url: str
:param params: parameters to add
:type params: dict
"""
parts = urlparse.urlparse(url)
query = dict(urlparse.parse_qsl(parts.query))
query.update(params)
updated = list(parts)
updated[4] = urlencode(query)
return urlparse.urlunparse(updated)
[docs]
def get_docker_client(tls_verify: bool = True, **kwargs):
"""
Get a docker client.
:param tls_verify : enable tls
:type tls_verify: bool
"""
import docker
return docker.DockerClient(tls=tls_verify, **kwargs)