eljur/Eljur/errors.py
2024-01-27 21:30:58 +03:00

87 lines
2.5 KiB
Python
Raw Permalink 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 re
from bs4 import BeautifulSoup
from requests import Session
def _findData(soup):
for tag in soup.find_all("script"):
contents = tag.contents
for content in contents:
if "sentryData" in content:
return content
def _checkStatus(err, url):
if not err.status_code:
return {"error": {"error_code": -102,
"error_msg": f"Возникла ошибка при отправке запроса по ссылке {url}"}}
if err.status_code >= 400:
return {"error": {"error_code": -102,
"error_msg": f"Возникла ошибка {err.status_code} при отправке запроса по ссылке {url}"}}
else:
return {"answer": "Ok",
"result": True}
def _checkSubdomain(subdomain):
subdomain = re.search(r"[a-zA-Z0-9]+", subdomain)
if not subdomain:
return {"error": {"error_code": -101,
"error_msg": "Поддомен не найден"}}
else:
return subdomain[0]
def _checkInstance(obj, cls):
if not isinstance(obj, cls):
return {"error": {"error_code": -201,
"error_msg": f"Экземпляр не пренадлежит к классу. {type(obj)} - {type(cls)}"}}
else:
return {"answer": "Ok",
"result": True}
def _fullCheck(subdomain, session, url, data=None):
subdomain = _checkSubdomain(subdomain)
if "error" in subdomain:
return subdomain
checkSession = _checkInstance(session, Session)
if "error" in checkSession:
return checkSession
del checkSession
getInfo = session.post(url=url, data=data)
checkStatus = _checkStatus(getInfo, url)
if "error" in checkStatus:
return checkStatus
del checkStatus
soup = BeautifulSoup(getInfo.text, 'lxml')
del getInfo, url
sentryData = _findData(soup)
if not sentryData:
return {"error": {"error_code": -104,
"error_msg": "Данные о пользователе не найдены."}}
del sentryData
return soup
def _smallCheck(subdomain, session, args):
subdomain = _checkSubdomain(subdomain)
if "error" in subdomain:
return subdomain
checkSession = _checkInstance(session, Session)
if "error" in checkSession:
return checkSession
del checkSession
checkDict = _checkInstance(args, dict)
if "error" in checkDict:
return checkDict
del checkDict