import requests import os from dotenv import load_dotenv from kontur_focus.government_lists import gl from kontur_focus.req import Request class Focus(Request): _basedir = os.path.abspath(os.path.dirname(__file__)) def __init__(self, inn: str, ogrn: str = None): load_dotenv() super().__init__( base_url=os.environ.get('FOCUS_BASE_URL'), access_key=os.environ.get('FOCUS_ACCESS_KEY'), inn=inn, ogrn=ogrn ) def base_info(self): """Выгрузка базовых реквизитов Российских юридических лиц и индивидуальных предпринимателей :return: Информация о ЮЛ :rtype: str """ return self.get(path='/req') def advanced_info(self): """Расширенные сведения на основе ЕГРЮЛ/ЕГРИП :return: Информация о ЮЛ :rtype: str """ return self.get('/egrDetails') def excerpt(self, path: str = None): """Выписка из ЕГРЮЛ/ЕГРИП :param path: Путь выгрузки файла. Если не указан, выгружается в текущий каталог. :type path: str, необязательный :return: Результат и путьвыгрузки :rtype: str """ response = self.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 f'File {file_path} saved' except Exception: return 'Saving error!' def founders_history(self): """История владения организацией :return: Набор полей с информацией об изменениях :rtype: str """ return self.get('/foundersHistory') def foreign_representatives(self): """Иностранные представительства и филиалы :return: Набор данных о представительствах :rtype: str """ return self.get('/foreignRepresentatives') def full_analytics(self): # DEPRECATED return self.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.get('/analyticLists') else: data = self.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)