import requests import settings from logger import logger_instance class SiproClient: _instance = None def __new__(cls, *args, **kwargs): if not cls._instance: cls._instance = super(SiproClient, cls).__new__(cls) return cls._instance def __init__(self, api_url: str, token: str): if not hasattr(self, 'initialized'): self.api_url = api_url self.token = token self.initialized = True logger_instance.info('SiproClient successfully initialized') def method(self, http_method: str, method: str, data: dict = None, raw=False): url = self.api_url + '/assemblr' + method headers = {'Authorization': self.token} response = requests.request(http_method, url, headers=headers, json=data) if raw: return response return response.json() def ping(self) -> str: return self.method('GET', '/ping').get('response') sipro_config = { 'api_url': settings.SIPRO_API_URL, 'token': settings.SIPRO_API_TOKEN, } sipro_client = SiproClient(**sipro_config) def get_client() -> SiproClient: return sipro_client