99 lines
3.1 KiB
Python
99 lines
3.1 KiB
Python
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)
|