Source code for smsc.messages

# -*- coding: utf-8 -*-
"""
smsc.messages module.

This module contains the messages objects that power smsc library.

:copyright: (c) 2017 by Alexey Shevchenko.
:license: MIT, see LICENSE for more details.
"""
from abc import ABCMeta
from typing import Any, Dict, Optional


[docs]class Message(metaclass=ABCMeta): """ Basic class for messages of ant type. Preferred for internal usage. :param str text: Text of the message :param Optional[str] msg_format: Message format. If None or empty - default, SMS message :param dict kwargs: Dictionary for optional API parameters """ def __init__(self, text: str, msg_format: Optional[str] = None, **kwargs: dict) -> None: # noqa: D102 self._text = text self._format = msg_format self._translit = kwargs.get("translit") self._tinyurl = kwargs.get("tinyurl") self._maxsms = kwargs.get("maxsms") self._charset = "utf-8" @property def format(self) -> str: """Format of the message. Default is SMS Message.""" return self._format @property def text(self) -> str: """Text of the message.""" return self._text
[docs] def encode(self) -> Dict[str, Any]: """Message parameters in dict, prepared for the API.""" res = {"mes": self._text, "charset": self._charset} # type: Dict[str, Any] if self._format is not None and self._format != "": res[self._format] = 1 if self._translit is not None: res["translit"] = self._translit if self._tinyurl is not None: res["tinyurl"] = self._tinyurl if self._maxsms is not None: res["maxsms"] = self._maxsms return res
def __str__(self) -> str: """Represent object as string.""" return "<%s text=%s format=%s>" % (self.__class__.__name__, self._text, self._format) def __repr__(self) -> str: """Represent object for debug purposes.""" return str(self)
[docs]class SMSMessage(Message): """ SMS message type. :param str text: Text of the message :param dict kwargs: Dictionary for optional API parameters Usage:: >>> from smsc import SMSMessage >>> m = SMSMessage(text="Hello, World!") >>> m <SMSMessage text=Hello, World! format=None> """ def __init__(self, text: str, **kwargs: dict) -> None: # noqa: D102 assert len(text) <= 800 super().__init__(text, msg_format=None, **kwargs)
[docs]class FlashMessage(Message): """ Flash-SMS message type. :param str text: Text of the message :param dict kwargs: Dictionary for optional API parameters Usage:: >>> from smsc import FlashMessage >>> m = FlashMessage(text="Hello, World!") >>> m <FlashMessage text=Hello, World! format=flash> """ def __init__(self, text: str, **kwargs: dict) -> None: # noqa: D102 assert len(text) <= 800 super().__init__(text, msg_format="flash", **kwargs)
[docs]class ViberMessage(Message): """ Viber messenger message type. Note: Seems currently not working now. :param str text: Text of the message :param dict kwargs: Dictionary for optional API parameters Usage:: >>> from smsc import ViberMessage >>> m = ViberMessage(text="Hello, World!") >>> m <ViberMessage text=Hello, World! format=viber> """ def __init__(self, text: str, **kwargs: dict) -> None: # noqa: D102 assert len(text) <= 800 super().__init__(text, msg_format="viber", **kwargs)