87 lines
2.4 KiB
Python
87 lines
2.4 KiB
Python
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)
|