py-scopes/scopes/web/client.py

35 lines
930 B
Python

# 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