import requests import os from dotenv import load_dotenv from kontur_focus.government_lists import gl class Focus: _base_url = None _access_key = None _inn = None _orgn = None _basedir = os.path.abspath(os.path.dirname(__file__)) def __init__(self, inn: str, ogrn: str = None): load_dotenv() self._base_url = os.environ.get('BASE_URL') self._access_key = os.environ.get('ACCESS_KEY') self._inn = inn self._orgn = ogrn def _r_get(self, path: str): full_url = f'{self._base_url}{path}' payload = {'key': self._access_key, 'inn': self._inn, 'ogrn': self._orgn} try: response = requests.get(url=full_url, params=payload) if response.headers['Content-Type'] == 'application/pdf': return response else: return response.json() except Exception: return 'Request error!' def base_info(self): return self._r_get('/req') def advanced_info(self): return self._r_get('/egrDetails') def excerpt(self, path=None): response = self._r_get('/excerpt') filename = f'{self._inn}_report.pdf' if not path: file_path = os.path.join(self._basedir, filename) else: file_path = os.path.join(path, filename) try: with open(file_path, mode='wb') as file: file.write(response.content) return 'File saved' except Exception: return 'Saving error!' def founders_history(self): return self._r_get('/foundersHistory') def foreign_representatives(self): return self._r_get('/foreignRepresentatives') def full_analytics(self): return self._r_get('/analytics') @staticmethod def government_lists(): formatted_list = [(elem.get('name'), elem.get('description')) for elem in gl] return formatted_list def check_if_in_lists(self, list_name: str = None): """ Check if organization is consist in Government lists :param list_name: str List name :return: json """ if not list_name: return self._r_get('/analyticLists') else: data = self._r_get('/analyticLists')[0]['listsEntries'] list_id = next(item['uid'] for item in gl if item['name'] == list_name) return next(lst['isInList'] for lst in data if lst['id'] == list_id)