Added docs generator, splitted methods

This commit is contained in:
2025-03-11 20:32:16 +03:00
parent 59f420c725
commit 60d29724b6
12 changed files with 278 additions and 37 deletions

View File

@@ -2,45 +2,47 @@ import requests
import os
from dotenv import load_dotenv
from kontur_focus.government_lists import gl
from kontur_focus.req import Request
class Focus:
_base_url = None
_access_key = None
_inn = None
_orgn = None
class Focus(Request):
_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!'
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 self._r_get('/req')
"""Выгрузка базовых реквизитов Российских юридических лиц и индивидуальных предпринимателей
:return: Информация о ЮЛ
:rtype: str
"""
return self.get(path='/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'
: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)
@@ -51,18 +53,28 @@ class Focus:
with open(file_path, mode='wb') as file:
file.write(response.content)
return 'File saved'
return f'File {file_path} saved'
except Exception:
return 'Saving error!'
def founders_history(self):
return self._r_get('/foundersHistory')
"""История владения организацией
:return: Набор полей с информацией об изменениях
:rtype: str
"""
return self.get('/foundersHistory')
def foreign_representatives(self):
return self._r_get('/foreignRepresentatives')
"""Иностранные представительства и филиалы
def full_analytics(self):
return self._r_get('/analytics')
:return: Набор данных о представительствах
:rtype: str
"""
return self.get('/foreignRepresentatives')
def full_analytics(self): # DEPRECATED
return self.get('/analytics')
@staticmethod
def government_lists():
@@ -78,9 +90,9 @@ class Focus:
:return: json
"""
if not list_name:
return self._r_get('/analyticLists')
return self.get('/analyticLists')
else:
data = self._r_get('/analyticLists')[0]['listsEntries']
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)