Coverage for src/integrify/lsim/single/client.py: 100%
23 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-09-01 02:22 +0000
« prev ^ index » next coverage.py v7.9.2, created at 2025-09-01 02:22 +0000
1from datetime import datetime
2from typing import TYPE_CHECKING, Union
4from integrify.api import APIClient
5from integrify.lsim import env as base_env
6from integrify.lsim.single import env
7from integrify.lsim.single.handlers import (
8 CheckBalancePayloadHandler,
9 GetReportGetPayloadHandler,
10 GetReportPostPayloadHandler,
11 SendSMSGetPayloadHandler,
12 SendSMSPostPayloadHandler,
13)
14from integrify.lsim.single.schemas.response import (
15 BaseGetResponseSchema,
16 BasePostResponseSchema,
17 ReportGetResponseSchema,
18 ReportPostResponseSchema,
19)
20from integrify.schemas import APIResponse
23class LSIMSingleSMSClientClass(APIClient):
24 def __init__(
25 self,
26 name='LSIM',
27 base_url=env.API.BASE_URL,
28 default_handler=None,
29 sync=True,
30 dry=False,
31 ):
32 super().__init__(name, base_url, default_handler, sync, dry)
34 self.add_url('send_sms_get', env.API.SEND_SMS_GET, verb='GET')
35 self.add_handler('send_sms_get', SendSMSGetPayloadHandler)
37 self.add_url('send_sms_post', env.API.SEND_SMS_POST, verb='POST')
38 self.add_handler('send_sms_post', SendSMSPostPayloadHandler)
40 self.add_url('check_balance', env.API.CHECK_BALANCE, verb='GET')
41 self.add_handler('check_balance', CheckBalancePayloadHandler)
43 self.add_url('get_report_get', env.API.GET_REPORT_GET, verb='GET')
44 self.add_handler('get_report_get', GetReportGetPayloadHandler)
46 self.add_url('get_report_post', env.API.GET_REPORT_POST, verb='POST')
47 self.add_handler('get_report_post', GetReportPostPayloadHandler)
49 if TYPE_CHECKING:
51 def send_sms_get(
52 self,
53 msisdn: str,
54 text: str,
55 login: str = base_env.LSIM_LOGIN, # type: ignore[assignment]
56 password: str = base_env.LSIM_PASSWORD, # type: ignore[assignment]
57 sender: str = base_env.LSIM_SENDER_NAME, # type: ignore[assignment]
58 unicode: bool = False,
59 ) -> APIResponse[BaseGetResponseSchema]:
60 """SMS göndərən GET sorğusu
62 **Endpoint:** */quicksms/v1/send*
64 Example:
65 ```python
66 from integrify.lsim import LSIMSingleSMSClient
68 LSIMSingleSMSClient.send_sms_get(msidn='99450XXXXXXX', text='test')
69 ```
71 Cavab formatı: [`BaseGetResponseSchema`][integrify.lsim.single.schemas.response.BaseGetResponseSchema]
73 Bu sorğunu göndərdikdə, cavab olaraq `BaseGetResponseSchema` formatında
74 cavab gəlir, və uğurlu olduqda, `obj` field-ində transaction_id dəyəri gəlir.
76 Args:
77 msisdn: SMS göndəriləcək nömrə: ölkə kodu + operator kodu + nömrə: 99450XXXXXXX
78 text: Mesaj məzmunu
79 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
80 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
81 sender: LSIM tərəfindən təyin olunmuş göndərən adınız. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
82 unicode: Mesajın unicode olub/olmaması. Əgər mesajda unikod simvollar (`ə`, `ş`, `ü` və s.) istifadə
83 edirsizsə, `True` seçməlisiniz
84 """ # noqa: E501
86 def send_sms_post(
87 self,
88 msisdn: str,
89 text: str,
90 login: str = base_env.LSIM_LOGIN, # type: ignore[assignment]
91 password: str = base_env.LSIM_PASSWORD, # type: ignore[assignment]
92 sender: str = base_env.LSIM_SENDER_NAME, # type: ignore[assignment]
93 unicode: bool = False,
94 scheduled: Union[str, datetime] = 'NOW',
95 ) -> APIResponse[BasePostResponseSchema]:
96 """SMS göndərən POST sorğusu
98 **Endpoint:** */quicksms/v1/smssender*
100 Example:
101 ```python
102 from integrify.lsim import LSIMSingleSMSClient
104 LSIMSingleSMSClient.send_sms_post(msidn='99450XXXXXXX', text='test')
105 ```
107 Cavab formatı: [`BasePostResponseSchema`][integrify.lsim.single.schemas.response.BasePostResponseSchema]
109 Bu sorğunu göndərdikdə, cavab olaraq `BasePostResponseSchema` formatında
110 cavab gəlir, və uğurlu olduqda, `obj` field-ində transaction_id dəyəri gəlir.
112 Args:
113 msisdn: SMS göndəriləcək nömrə: ölkə kodu + operator kodu + nömrə: 99450XXXXXXX
114 text: Mesaj məzmunu
115 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
116 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
117 sender: LSIM tərəfindən təyin olunmuş göndərən adınız. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
118 unicode: Mesajın unicode olub/olmaması. Əgər mesajda unikod simvollar (`ə`, `ş`, `ü` və s.) istifadə
119 edirsizsə, `True` seçməlisiniz
120 scheduled: Öncədən SMS göndərilməsi üçün seçilmiş zaman. Zamanı `2023-05-19 15:40:05`
121 formatında verməlisiniz. Sahə boş qaldıqda, SMS sorğu atdığınız an gedəcək.
122 """ # noqa: E501
124 def check_balance(
125 self,
126 login: str = base_env.LSIM_LOGIN, # type: ignore[assignment]
127 password: str = base_env.LSIM_PASSWORD, # type: ignore[assignment]
128 ) -> APIResponse[BaseGetResponseSchema]:
129 """LSIM balans sorğusu
131 **Endpoint:** */quicksms/v1/balance*
133 Example:
134 ```python
135 from integrify.lsim import LSIMSingleSMSClient
137 LSIMSingleSMSClient.check_balance()
138 ```
140 Cavab formatı: [`BaseGetResponseSchema`][integrify.lsim.single.schemas.response.BaseGetResponseSchema]
142 Bu sorğunu göndərdikdə, cavab olaraq `BaseGetResponseSchema` formatında
143 cavab gəlir, `obj` field-ində balans dəyəri gəlir.
145 Args:
146 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
147 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
148 """ # noqa: E501
150 def get_report_get(
151 self,
152 trans_id: int,
153 login: str = base_env.LSIM_LOGIN, # type: ignore[assignment]
154 ) -> APIResponse[ReportGetResponseSchema]:
155 """Göndərilmiş SMS-in reportunu alan GET sorğusu
157 **Endpoint:** */quicksms/v1/report*
159 Example:
160 ```python
161 from integrify.lsim import LSIMSingleSMSClient
163 LSIMSingleSMSClient.get_report_get(trans_id=1)
164 ```
166 Cavab formatı: [`ReportGetResponseSchema`][integrify.lsim.single.schemas.response.ReportGetResponseSchema]
168 Args:
169 trans_id: Uğurlu SMS göndərildikdə alınan transaction id
170 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
171 """ # noqa: E501
173 def get_report_post(
174 self,
175 trans_id: int,
176 login: str = base_env.LSIM_LOGIN, # type: ignore[assignment]
177 ) -> APIResponse[ReportPostResponseSchema]:
178 """Göndərilmiş SMS-in reportunu alan POST sorğusu
180 **Endpoint:** */quicksms/v1/smsreporter*
182 Example:
183 ```python
184 from integrify.lsim import LSIMSingleSMSClient
186 LSIMSingleSMSClient.get_report_post(trans_id=1)
187 ```
189 Cavab formatı: [`ReportPostResponseSchema`][integrify.lsim.single.schemas.response.ReportPostResponseSchema]
191 Args:
192 trans_id: Uğurlu SMS göndərildikdə alınan transaction id
193 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
194 """ # noqa: E501
197LSIMSingleSMSClient = LSIMSingleSMSClientClass()
198LSIMSingleSMSAsyncClient = LSIMSingleSMSClientClass(sync=False)