diff --git a/README.md b/README.md index 6d27a2c..a833c21 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ from sms_ir import SmsIr sms_ir = SmsIr( api_key, linenumber, + logger #Optional ) ``` diff --git a/setup.py b/setup.py index 3576d11..059f0bc 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="smsir-python", - version="1.1.7", + version="1.1.8", author="Mojtaba Akbari", author_email="mojtaba.akbari.221b@gmail.com", packages=["sms_ir", "sms_ir/async_services", "sms_ir/sync_services"], diff --git a/sms_ir/async_services/__init__.py b/sms_ir/async_services/__init__.py index 1c24ab7..69f51b4 100644 --- a/sms_ir/async_services/__init__.py +++ b/sms_ir/async_services/__init__.py @@ -3,12 +3,15 @@ from aiohttp import ClientResponse from .requester import Requestser +from ..base_logger import get_default_logger + class AsyncSmsIr: def __init__( self, api_key: str, linenumber: Optional[int] = None, + logger=get_default_logger(), ) -> None: headers = { "X-API-KEY": api_key, @@ -17,7 +20,7 @@ def __init__( } self._linenumber = linenumber - self._requester = Requestser(headers) + self._requester = Requestser(headers, logger) async def close(self): """ diff --git a/sms_ir/async_services/requester.py b/sms_ir/async_services/requester.py index 3de1f21..c7a94c5 100644 --- a/sms_ir/async_services/requester.py +++ b/sms_ir/async_services/requester.py @@ -4,8 +4,8 @@ class Requestser(BaseRequester): - def __init__(self, headers: dict[str, str]) -> None: - super().__init__() + def __init__(self, headers: dict[str, str], logger) -> None: + super().__init__(logger) self._session = ClientSession(base_url=self.endpoint, headers=headers) async def close(self): diff --git a/sms_ir/base_logger.py b/sms_ir/base_logger.py new file mode 100644 index 0000000..034b4c1 --- /dev/null +++ b/sms_ir/base_logger.py @@ -0,0 +1,22 @@ +import sys +import logging + +from functools import cache + + +@cache +def get_default_logger(): + # setup logging + log_level = logging.INFO + + log_format = logging.Formatter("[%(asctime)s] [%(levelname)s] - %(message)s") + logger = logging.getLogger(__name__) + logger.setLevel(log_level) + + # writing to stdout + handler = logging.StreamHandler(sys.stdout) + handler.setLevel(log_level) + handler.setFormatter(log_format) + logger.addHandler(handler) + + return logger diff --git a/sms_ir/base_requester.py b/sms_ir/base_requester.py index b2ab139..14f99f6 100644 --- a/sms_ir/base_requester.py +++ b/sms_ir/base_requester.py @@ -1,21 +1,8 @@ -import logging -import sys ENDPOINT = "https://api.sms.ir" + class BaseRequester: - def __init__(self) -> None: + def __init__(self, logger) -> None: self.endpoint = ENDPOINT - - # setup logging - self.log_level = logging.INFO - - log_format = logging.Formatter("[%(asctime)s] [%(levelname)s] - %(message)s") - self.logger = logging.getLogger(__name__) - self.logger.setLevel(self.log_level) - - # writing to stdout - handler = logging.StreamHandler(sys.stdout) - handler.setLevel(self.log_level) - handler.setFormatter(log_format) - self.logger.addHandler(handler) + self.logger = logger diff --git a/sms_ir/sync_services/__init__.py b/sms_ir/sync_services/__init__.py index 9e372ab..e751159 100644 --- a/sms_ir/sync_services/__init__.py +++ b/sms_ir/sync_services/__init__.py @@ -1,6 +1,7 @@ from typing import List, Optional from requests.models import Response from .requester import Requestser +from ..base_logger import get_default_logger class SmsIr: @@ -8,6 +9,7 @@ def __init__( self, api_key: str, linenumber: Optional[int] = None, + logger=get_default_logger(), ) -> None: headers = { "X-API-KEY": api_key, @@ -16,7 +18,7 @@ def __init__( } self._linenumber = linenumber - self._requester = Requestser(headers) + self._requester = Requestser(headers, logger) def send_sms( self, diff --git a/sms_ir/sync_services/requester.py b/sms_ir/sync_services/requester.py index 36fdb76..2ceb56d 100644 --- a/sms_ir/sync_services/requester.py +++ b/sms_ir/sync_services/requester.py @@ -5,8 +5,8 @@ class Requestser(BaseRequester): - def __init__(self, headers: dict[str, str]) -> None: - super().__init__() + def __init__(self, headers: dict[str, str], logger) -> None: + super().__init__(logger) self._session = requests.Session() self._session.headers.update(headers)