Files
prosto-sms-python/prosto_sms/__init__.py
T
chydo aac0458437 fixed: error with data
moved: api to init
updated: version up to 0.0.2
2024-04-05 01:50:12 +07:00

80 lines
1.9 KiB
Python

from typing import Optional
import requests
from loguru import logger
from . import exceptions
from . import methods
class API:
"""
Main api class
"""
def __init__(
self,
email: str = None,
password: str = None,
key: str = None
):
"""
Initializing the API
:param email: account email address
:param password: account password
:param key: api key
"""
self.email = email
self.password = password
self.key = key
self.api_url = "https://ssl.bs00.ru"
self.methods = methods.Methods(self)
def request(self, method: str, data: dict = None) -> Optional[dict]:
"""
Method for requesting information
:param method: required method
:param data: request parameters
:return: response data
"""
if data is None:
data = {}
data["format"] = "json"
if not data.get("method"):
data["method"] = method
if self.key and not (self.email and self.password):
data["key"] = self.key
elif (self.email and self.password) and not self.key:
data["email"] = self.email
data["password"] = self.password
else:
raise exceptions.NoAuthData(
"email and password OR key is required"
)
try:
result = requests.get(
url=self.api_url,
params=data,
timeout=30
)
result.raise_for_status()
result = result.json()
except Exception as err:
logger.exception(err)
return
if result["response"]["msg"].get("type") == "error":
raise exceptions.RequestError(
result["response"]["msg"]["text"]
)
return result["response"]["data"]