# scopes.web.client """Web client functionality: access to web sites, APIs with authentication.""" import logging import requests from scopes.web.auth import oidc import config logger = logging.getLogger('web.client') class ApiClient: def __init__(self, baseUrl, authToken=None): self.baseUrl = baseUrl self.authToken = authToken def authentication(self): if self.authToken == None: self.authToken = oidc.authenticateClient() return dict(Authorization=f'Bearer {self.authToken}') def post(self, endpoint, data): headers = self.authentication() # self.makeUrl(endpoint) url = '/'.join((self.baseUrl, endpoint)) resp = requests.post(url, json=data, headers=headers) if resp.status_code != 200: logger.error('post %s: %s', url, resp.text) return resp.text data = resp.json() return data