Source code for pyonlinesim.clients.sms

from abc import ABC
from typing import Optional, List

from ..core.abc import BaseAPIClient
from ..core.methods import Methods
from ..types.sms import Balance, NumberStats, OrderNumber, StateInfo, OrderManaged


[docs]class OnlineSMS(BaseAPIClient, ABC): BASE_URL = 'https://onlinesim.ru/api/'
[docs] def __init__(self, api_key: str): super().__init__(api_key)
[docs] async def get_services(self, country: Optional[str] = None) -> NumberStats: """ Get Number Stats :param country: Country (If not provided will return all the countries) :return: NumberStats """ params = {"country": country} result = await self._send_request(Methods.GET_NUMBERS_STATS, params) return NumberStats(**result)
[docs] async def order_number(self, service: str, region: Optional[int] = None, country: Optional[int] = None, reject: Optional[List[int]] = None, extension: Optional[int] = None, number: Optional[bool] = None, dev_id: Optional[int] = None) -> OrderNumber: """ Order Number :param service: Service ID :param region: Region (77 - Moscow for example) :param country: Country ID (default=7) :param reject: Reject numbers mask ([911, 912] for example) :param extension: Extension (default=0) :param number: Return Number (default=False) :param dev_id: Developer ID :return: """ params = {"service": service, "region": region, "country": country, "reject": reject, "extension": extension, "dev_id": dev_id, "number": str(number) if number else None} result = await self._send_request(Methods.GET_NUM, params) return OrderNumber(**result)
[docs] async def get_order_info(self, operation_id: int, get_full_message: Optional[bool] = False, form: Optional[int] = None, order_by: Optional[str] = None, msg_list: Optional[int] = None, clean: Optional[int] = None) -> StateInfo: """ Get Order Info :param clean: Do not show messages on a circle (?). :param msg_list: Type of message list, 1 - the list, 0 - the active message :param order_by: ascending/descending sorting asc/desc. Default value - asc :param form: type of reception, 1 - online reception, 2 - repeated reception, 3 - delayed reception. :param get_full_message: Get Full Message. If True, will return the full message. :param operation_id: Operation ID :return: Order Info """ params = {"tzid": operation_id, "message_to_code": 0 if get_full_message else 1, "form": form, "order_by": order_by, "msg_list": msg_list, "clean": clean} result = await self._send_request(Methods.GET_STATE, params) corrected_json = {"response": "1", "orders": result} return StateInfo(**corrected_json)
[docs] async def finish_order(self, operation_id: int, ban: Optional[bool] = False) -> OrderManaged: """ Finish Order :param ban: Block Number (Only for Chinese numbers) :param operation_id: Operation ID :return: None """ params = {"tzid": operation_id, "ban": 1 if ban else 0} result = await self._send_request(Methods.SET_OPERATION_OK, params) return OrderManaged(**result)
[docs] async def revise_order(self, operation_id: int) -> OrderManaged: """ Revise Order :param operation_id: Operation ID :return: None """ params = {"tzid": operation_id} result = await self._send_request(Methods.SET_OPERATION_REVISE, params) return OrderManaged(**result)