from py.lib.http import get_request_client from py.lib.scwrypts import getenv REQUEST = None COLLECTIONS = None FIELDS = {} def request(method, endpoint, **kwargs): global REQUEST # pylint: disable=global-statement if REQUEST is None: REQUEST = get_request_client( base_url = getenv("DIRECTUS__BASE_URL"), headers = { 'Authorization': f'bearer {getenv("DIRECTUS__API_TOKEN")}', } ) return REQUEST(method, endpoint, **kwargs) def graphql(query, system=False): return request( 'POST', 'graphql' if system is True else 'graphql/system', json={'query': query}, ) def get_collections(): global COLLECTIONS # pylint: disable=global-statement if COLLECTIONS is None: COLLECTIONS = [ item['collection'] for item in request( 'GET', 'collections?limit=-1&fields[]=collection', ).json()['data'] ] return COLLECTIONS def get_fields(collection): if FIELDS.get(collection) is None: FIELDS[collection] = [ item['field'] for item in request( 'GET', f'fields/{collection}?limit=-1&fields[]=field', ).json()['data'] ] return FIELDS[collection]