Files
kontur-focus-lib/kontur_focus/focus.py

99 lines
3.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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)