python-snippets/api-client/eg.py
2024-07-19 19:18:53 +01:00

48 lines
1.4 KiB
Python

from requests_oauthlib import OAuth2Session
from oauthlib.oauth2 import BackendApplicationClient
from dotenv import load_dotenv
import os
environment_name = os.getenv('ENV_NAME', 'qa') # need to find a place for this
dotenv_path = f'.env.{environment_name}'
load_dotenv(dotenv_path)
client_id = os.getenv('CLIENT_ID')
client_secret = os.getenv('CLIENT_SECRET')
token_url = os.getenv('TOKEN_URL')
username = os.getenv('USERNAME')
password = os.getenv('PASSWORD')
audience = os.getenv('AUDIENCE')
scope = os.getenv('SCOPE', '').split(',')
api_url = os.getenv('API_URL')
def get_token(client_id, client_secret, token_url, username, password, audience, scope):
client = BackendApplicationClient(client_id=client_id)
oauth = OAuth2Session(client=client)
token = oauth.fetch_token(
token_url=token_url,
username=username,
password=password,
client_id=client_id,
client_secret=client_secret,
audience=audience,
scope=scope
)
return token
def api_client(resource_url, auth_token):
client = OAuth2Session(token=auth_token)
response = client.get(resource_url)
return response.content
# Fetch token
token = get_token(client_id, client_secret, token_url, username, password, audience, scope)
# Now we can make API calls
api_response = api_client(api_url + '/resource', token)
print(api_response)