Coverage for packages/lsim/src/integrify/lsim/bulk/client.py: 100%
25 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-19 02:39 +0000
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-19 02:39 +0000
1from collections.abc import Coroutine
2from typing import TYPE_CHECKING, Any, Generic, overload
4from integrify.api import APIClient, _Async, _Mode, _Sync
5from integrify.lsim import env as base_env
6from integrify.lsim.bulk import env
7from integrify.lsim.bulk.handlers import (
8 GetBalancePayloadHandler,
9 GetBulkSMSDeatiledReportPayloadHandler,
10 GetBulkSMSDeatiledWithDateReportPayloadHandler,
11 GetBulkSMSReportPayloadHandler,
12 SendBulkSMSDifferentMessagesPayloadHandler,
13 SendBulkSMSOneMessagePayloadHandler,
14)
15from integrify.lsim.bulk.schemas.response import (
16 GetBalanceResponseSchema,
17 GetBulkSMSDetailedReportResponseSchema,
18 GetBulkSMSReportResponseSchema,
19 SendBulkSMSResponseSchema,
20)
21from integrify.schemas import APIResponse
24class LSIMBulkSMSClientClass(APIClient, Generic[_Mode]):
25 def __init__(
26 self,
27 name='LSIM-BulkSMS',
28 base_url=env.API.BASE_URL,
29 default_handler=None,
30 sync=True,
31 dry=False,
32 ):
33 super().__init__(name, base_url, default_handler, sync, dry)
35 self.add_url('bulk_send_one_message', env.API.ENDPOINT, verb='POST')
36 self.add_handler('bulk_send_one_message', SendBulkSMSOneMessagePayloadHandler)
38 self.add_url('bulk_send_different_messages', env.API.ENDPOINT, verb='POST')
39 self.add_handler('bulk_send_different_messages', SendBulkSMSDifferentMessagesPayloadHandler)
41 self.add_url('get_report', env.API.ENDPOINT, verb='POST')
42 self.add_handler('get_report', GetBulkSMSReportPayloadHandler)
44 self.add_url('get_detailed_report', env.API.ENDPOINT, verb='POST')
45 self.add_handler('get_detailed_report', GetBulkSMSDeatiledReportPayloadHandler)
47 self.add_url('get_detailed_report_with_dates', env.API.ENDPOINT, verb='POST')
48 self.add_handler(
49 'get_detailed_report_with_dates',
50 GetBulkSMSDeatiledWithDateReportPayloadHandler,
51 )
53 self.add_url('check_balance', env.API.ENDPOINT, verb='POST')
54 self.add_handler('check_balance', GetBalancePayloadHandler)
56 if TYPE_CHECKING:
57 # pylint: disable=missing-function-docstring,unused-argument
59 @overload
60 def bulk_send_one_message(
61 self: 'LSIMBulkSMSClientClass[_Sync]',
62 controlid: int,
63 msisdns: list[str],
64 bulkmessage: str,
65 scheduled: str = 'NOW',
66 login: str = base_env.LSIM_LOGIN,
67 password: str = base_env.LSIM_PASSWORD,
68 title: str = base_env.LSIM_SENDER_NAME,
69 ) -> APIResponse[SendBulkSMSResponseSchema]:
70 """Bir SMS-i toplu şəkildə bir çox nəfərə göndərmək sorğusu
72 **Endpoint:** */smxml/api*
74 Example:
75 ```python
76 from integrify.lsim import LSIMBulkSMSClient
78 LSIMBulkSMSClient.bulk_send_one_message(controlid=1, msisdns=['99450XXXXXXX'], bulkmessage='Hello world')
79 ```
81 Cavab formatı: [`SendBulkSMSResponseSchema`][integrify.lsim.bulk.schemas.response.SendBulkSMSResponseSchema]
83 Args:
84 controlid: Unikal sorğu id-si. Siz tərəfdən generasiya olunur.
85 msisdns: SMS göndəriləcək nömrələr listi. Hər nömrə bu formatda olmalıdır: ölkə kodu + operator kodu + nömrə: 99450XXXXXXX
86 bulkmessage: Bu nömrələrə göndəriləcək mesaj məzmunu
87 scheduled: Öncədən SMS göndərilməsi üçün seçilmiş zaman. Zamanı `2023-05-19 15:40:05`
88 formatında verməlisiniz. Sahə boş qaldıqda, SMS sorğu atdığınız an gedəcək.
89 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
90 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
91 title: 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.
92 """ # noqa: E501
94 @overload
95 def bulk_send_one_message(
96 self: 'LSIMBulkSMSClientClass[_Async]',
97 controlid: int,
98 msisdns: list[str],
99 bulkmessage: str,
100 scheduled: str = 'NOW',
101 login: str = base_env.LSIM_LOGIN,
102 password: str = base_env.LSIM_PASSWORD,
103 title: str = base_env.LSIM_SENDER_NAME,
104 ) -> Coroutine[Any, Any, APIResponse[SendBulkSMSResponseSchema]]: ...
105 def bulk_send_one_message(self, *args: Any, **kwds: Any) -> Any: ...
107 @overload
108 def bulk_send_different_messages(
109 self: 'LSIMBulkSMSClientClass[_Sync]',
110 controlid: int,
111 msisdns: list[str],
112 messages: list[str],
113 scheduled: str = 'NOW',
114 login: str = base_env.LSIM_LOGIN,
115 password: str = base_env.LSIM_PASSWORD,
116 title: str = base_env.LSIM_SENDER_NAME,
117 ) -> APIResponse[SendBulkSMSResponseSchema]:
118 """Toplu şəkildə bir çox nəfərə fərqli SMS göndərmək sorğusu
120 **Endpoint:** */smxml/api*
122 Example:
123 ```python
124 from integrify.lsim import LSIMBulkSMSClient
126 LSIMBulkSMSClient.bulk_send_one_message(controlid=1, msisdns=['99450XXXXXXX', '99451XXXXXXX'],
127 messages=['Hello world 1', 'Hello world 2'])
128 ```
130 Cavab formatı: [`SendBulkSMSResponseSchema`][integrify.lsim.bulk.schemas.response.SendBulkSMSResponseSchema]
132 Args:
133 controlid: Unikal sorğu id-si. Siz tərəfdən generasiya olunur.
134 msisdns: SMS göndəriləcək nömrələr listi. Hər nömrə bu formatda olmalıdır: ölkə kodu + operator kodu + nömrə: 99450XXXXXXX
135 messages: Bu nömrələrə göndəriləcək mesajların düzgün ardıcıllıqla məzmunu
136 scheduled: Öncədən SMS göndərilməsi üçün seçilmiş zaman. Zamanı `2023-05-19 15:40:05`
137 formatında verməlisiniz. Sahə boş qaldıqda, SMS sorğu atdığınız an gedəcək.
138 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
139 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
140 title: 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.
141 """ # noqa: E501
143 @overload
144 def bulk_send_different_messages(
145 self: 'LSIMBulkSMSClientClass[_Async]',
146 controlid: int,
147 msisdns: list[str],
148 messages: list[str],
149 scheduled: str = 'NOW',
150 login: str = base_env.LSIM_LOGIN,
151 password: str = base_env.LSIM_PASSWORD,
152 title: str = base_env.LSIM_SENDER_NAME,
153 ) -> Coroutine[Any, Any, APIResponse[SendBulkSMSResponseSchema]]: ...
154 def bulk_send_different_messages(self, *args: Any, **kwds: Any) -> Any: ...
156 @overload
157 def get_report(
158 self: 'LSIMBulkSMSClientClass[_Sync]',
159 taskid: int,
160 login: str = base_env.LSIM_LOGIN,
161 password: str = base_env.LSIM_PASSWORD,
162 ) -> APIResponse[GetBulkSMSReportResponseSchema]:
163 """Toplu göndərilmiş SMSlərin report sorğusu
165 **Endpoint:** */smxml/api*
167 Example:
168 ```python
169 from integrify.lsim import LSIMBulkSMSClient
171 LSIMBulkSMSClient.get_report(taskid=1)
172 ```
174 Cavab formatı: [`GetBulkSMSReportResponseSchema`][integrify.lsim.bulk.schemas.response.GetBulkSMSReportResponseSchema]
176 Args:
177 taskid: Uğurlu toplu SMS göndərdikdə alınmış taskid.
178 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
179 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
180 """ # noqa: E501
182 @overload
183 def get_report(
184 self: 'LSIMBulkSMSClientClass[_Async]',
185 taskid: int,
186 login: str = base_env.LSIM_LOGIN,
187 password: str = base_env.LSIM_PASSWORD,
188 ) -> Coroutine[Any, Any, APIResponse[GetBulkSMSReportResponseSchema]]: ...
189 def get_report(self, *args: Any, **kwds: Any) -> Any: ...
191 @overload
192 def get_detailed_report(
193 self: 'LSIMBulkSMSClientClass[_Sync]',
194 taskid: int,
195 login: str = base_env.LSIM_LOGIN,
196 password: str = base_env.LSIM_PASSWORD,
197 ) -> APIResponse[GetBulkSMSDetailedReportResponseSchema]:
198 """Toplu göndərilmiş SMSlərin detallı report sorğusu
200 **Endpoint:** */smxml/api*
202 Example:
203 ```python
204 from integrify.lsim import LSIMBulkSMSClient
206 LSIMBulkSMSClient.get_detailed_report(taskid=1)
207 ```
209 Cavab formatı: [`GetBulkSMSDetailedReportResponseSchema`][integrify.lsim.bulk.schemas.response.GetBulkSMSDetailedReportResponseSchema]
211 Args:
212 taskid: Uğurlu toplu SMS göndərdikdə alınmış taskid.
213 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
214 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
215 """ # noqa: E501
217 @overload
218 def get_detailed_report(
219 self: 'LSIMBulkSMSClientClass[_Async]',
220 taskid: int,
221 login: str = base_env.LSIM_LOGIN,
222 password: str = base_env.LSIM_PASSWORD,
223 ) -> Coroutine[Any, Any, APIResponse[GetBulkSMSDetailedReportResponseSchema]]: ...
224 def get_detailed_report(self, *args: Any, **kwds: Any) -> Any: ...
226 @overload
227 def get_detailed_report_with_dates(
228 self: 'LSIMBulkSMSClientClass[_Sync]',
229 taskid: int,
230 login: str = base_env.LSIM_LOGIN,
231 password: str = base_env.LSIM_PASSWORD,
232 ) -> APIResponse[GetBulkSMSDetailedReportResponseSchema]:
233 """Toplu göndərilmiş SMSlərin detallı report (+ tarix) sorğusu
235 **Endpoint:** */smxml/api*
237 Example:
238 ```python
239 from integrify.lsim import LSIMBulkSMSClient
241 LSIMBulkSMSClient.get_detailed_report_with_dates(taskid=1)
242 ```
244 Cavab formatı: [`GetBulkSMSDetailedReportResponseSchema`][integrify.lsim.bulk.schemas.response.GetBulkSMSDetailedReportResponseSchema]
246 Args:
247 taskid: Uğurlu toplu SMS göndərdikdə alınmış taskid.
248 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
249 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
250 """ # noqa: E501
252 @overload
253 def get_detailed_report_with_dates(
254 self: 'LSIMBulkSMSClientClass[_Async]',
255 taskid: int,
256 login: str = base_env.LSIM_LOGIN,
257 password: str = base_env.LSIM_PASSWORD,
258 ) -> Coroutine[Any, Any, APIResponse[GetBulkSMSDetailedReportResponseSchema]]: ...
259 def get_detailed_report_with_dates(self, *args: Any, **kwds: Any) -> Any: ...
261 @overload
262 def check_balance(
263 self: 'LSIMBulkSMSClientClass[_Sync]',
264 login: str = base_env.LSIM_LOGIN,
265 password: str = base_env.LSIM_PASSWORD,
266 ) -> APIResponse[GetBalanceResponseSchema]:
267 """Balansı öyrənmək sorğusu
269 **Endpoint:** */smxml/api*
271 Example:
272 ```python
273 from integrify.lsim import LSIMBulkSMSClient
275 LSIMBulkSMSClient.check_balance()
276 ```
278 Cavab formatı: [`GetBalanceResponseSchema`][integrify.lsim.bulk.schemas.response.GetBalanceResponseSchema]
280 Args:
281 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
282 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
283 """ # noqa: E501
285 @overload
286 def check_balance(
287 self: 'LSIMBulkSMSClientClass[_Async]',
288 login: str = base_env.LSIM_LOGIN,
289 password: str = base_env.LSIM_PASSWORD,
290 ) -> Coroutine[Any, Any, APIResponse[GetBalanceResponseSchema]]: ...
291 def check_balance(self, *args: Any, **kwds: Any) -> Any: ...
294LSIMBulkSMSClient: 'LSIMBulkSMSClientClass[_Sync]' = LSIMBulkSMSClientClass()
295LSIMBulkSMSAsyncClient: 'LSIMBulkSMSClientClass[_Async]' = LSIMBulkSMSClientClass(sync=False)