Source code for copr.v3.proxies
import os
from copr.v3.auth import auth_from_config
from copr.v3.requests import munchify, Request
from ..helpers import for_all_methods, bind_proxy, config_from_file
[docs]
@for_all_methods(bind_proxy)
class BaseProxy(object):
"""
Parent class for all other proxies
"""
def __init__(self, config):
self.config = config
self.request = Request(
api_base_url=self.api_base_url,
connection_attempts=config.get("connection_attempts", 1)
)
self._auth = None
@classmethod
def create_from_config_file(cls, path=None):
config = config_from_file(path)
return cls(config)
@property
def api_base_url(self):
return os.path.join(self.config["copr_url"], "api_3", "")
@property
def auth(self):
if not self._auth:
self._auth = auth_from_config(self.config)
return self._auth
[docs]
def home(self):
"""
Call the Copr APIv3 base URL
:return: Munch
"""
endpoint = ""
response = self.request.send(endpoint=endpoint)
return munchify(response)
[docs]
def auth_check(self):
"""
Call an endpoint protected by login to check whether the user auth key is valid
:return: Munch
"""
endpoint = "/auth-check"
response = self.request.send(endpoint=endpoint, auth=self.auth)
return munchify(response)
[docs]
def auth_username(self):
"""
Return the username (string) assigned to this configuration. May
contact the server and authenticate if needed.
"""
if not self.auth.username:
self.auth.make()
return self.auth.username