Coverage for packages/lsim/src/integrify/lsim/single/client.py: 100%
24 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 datetime import datetime
3from typing import TYPE_CHECKING, Any, Generic, overload
5from integrify.api import APIClient, _Async, _Mode, _Sync
6from integrify.lsim import env as base_env
7from integrify.lsim.single import env
8from integrify.lsim.single.handlers import (
9 CheckBalancePayloadHandler,
10 GetReportGetPayloadHandler,
11 GetReportPostPayloadHandler,
12 SendSMSGetPayloadHandler,
13 SendSMSPostPayloadHandler,
14)
15from integrify.lsim.single.schemas.response import (
16 BaseGetResponseSchema,
17 BasePostResponseSchema,
18 ReportGetResponseSchema,
19 ReportPostResponseSchema,
20)
21from integrify.schemas import APIResponse
24class LSIMSingleSMSClientClass(APIClient, Generic[_Mode]):
25 def __init__(
26 self,
27 name='LSIM',
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('send_sms_get', env.API.SEND_SMS_GET, verb='GET')
36 self.add_handler('send_sms_get', SendSMSGetPayloadHandler)
38 self.add_url('send_sms_post', env.API.SEND_SMS_POST, verb='POST')
39 self.add_handler('send_sms_post', SendSMSPostPayloadHandler)
41 self.add_url('check_balance', env.API.CHECK_BALANCE, verb='GET')
42 self.add_handler('check_balance', CheckBalancePayloadHandler)
44 self.add_url('get_report_get', env.API.GET_REPORT_GET, verb='GET')
45 self.add_handler('get_report_get', GetReportGetPayloadHandler)
47 self.add_url('get_report_post', env.API.GET_REPORT_POST, verb='POST')
48 self.add_handler('get_report_post', GetReportPostPayloadHandler)
50 if TYPE_CHECKING:
51 # pylint: disable=missing-function-docstring,unused-argument
53 @overload
54 def send_sms_get(
55 self: 'LSIMSingleSMSClientClass[_Sync]',
56 msisdn: str,
57 text: str,
58 login: str = base_env.LSIM_LOGIN,
59 password: str = base_env.LSIM_PASSWORD,
60 sender: str = base_env.LSIM_SENDER_NAME,
61 unicode: bool = False,
62 ) -> APIResponse[BaseGetResponseSchema]:
63 """SMS göndərən GET sorğusu
65 **Endpoint:** */quicksms/v1/send*
67 Example:
68 ```python
69 from integrify.lsim import LSIMSingleSMSClient
71 LSIMSingleSMSClient.send_sms_get(msidn='99450XXXXXXX', text='test')
72 ```
74 Cavab formatı: [`BaseGetResponseSchema`][integrify.lsim.single.schemas.response.BaseGetResponseSchema]
76 Bu sorğunu göndərdikdə, cavab olaraq `BaseGetResponseSchema` formatında
77 cavab gəlir, və uğurlu olduqda, `obj` field-ində transaction_id dəyəri gəlir.
79 Args:
80 msisdn: SMS göndəriləcək nömrə: ölkə kodu + operator kodu + nömrə: 99450XXXXXXX
81 text: Mesaj məzmunu
82 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
83 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
84 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.
85 unicode: Mesajın unicode olub/olmaması. Əgər mesajda unikod simvollar (`ə`, `ş`, `ü` və s.) istifadə
86 edirsizsə, `True` seçməlisiniz
87 """ # noqa: E501
89 @overload
90 def send_sms_get(
91 self: 'LSIMSingleSMSClientClass[_Async]',
92 msisdn: str,
93 text: str,
94 login: str = base_env.LSIM_LOGIN,
95 password: str = base_env.LSIM_PASSWORD,
96 sender: str = base_env.LSIM_SENDER_NAME,
97 unicode: bool = False,
98 ) -> Coroutine[Any, Any, APIResponse[BaseGetResponseSchema]]: ...
99 def send_sms_get(self, *args: Any, **kwds: Any) -> Any: ...
101 @overload
102 def send_sms_post(
103 self: 'LSIMSingleSMSClientClass[_Sync]',
104 msisdn: str,
105 text: str,
106 login: str = base_env.LSIM_LOGIN,
107 password: str = base_env.LSIM_PASSWORD,
108 sender: str = base_env.LSIM_SENDER_NAME,
109 unicode: bool = False,
110 scheduled: str | datetime = 'NOW',
111 ) -> APIResponse[BasePostResponseSchema]:
112 """SMS göndərən POST sorğusu
114 **Endpoint:** */quicksms/v1/smssender*
116 Example:
117 ```python
118 from integrify.lsim import LSIMSingleSMSClient
120 LSIMSingleSMSClient.send_sms_post(msidn='99450XXXXXXX', text='test')
121 ```
123 Cavab formatı: [`BasePostResponseSchema`][integrify.lsim.single.schemas.response.BasePostResponseSchema]
125 Bu sorğunu göndərdikdə, cavab olaraq `BasePostResponseSchema` formatında
126 cavab gəlir, və uğurlu olduqda, `obj` field-ində transaction_id dəyəri gəlir.
128 Args:
129 msisdn: SMS göndəriləcək nömrə: ölkə kodu + operator kodu + nömrə: 99450XXXXXXX
130 text: Mesaj məzmunu
131 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
132 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
133 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.
134 unicode: Mesajın unicode olub/olmaması. Əgər mesajda unikod simvollar (`ə`, `ş`, `ü` və s.) istifadə
135 edirsizsə, `True` seçməlisiniz
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 """ # noqa: E501
140 @overload
141 def send_sms_post(
142 self: 'LSIMSingleSMSClientClass[_Async]',
143 msisdn: str,
144 text: str,
145 login: str = base_env.LSIM_LOGIN,
146 password: str = base_env.LSIM_PASSWORD,
147 sender: str = base_env.LSIM_SENDER_NAME,
148 unicode: bool = False,
149 scheduled: str | datetime = 'NOW',
150 ) -> Coroutine[Any, Any, APIResponse[BasePostResponseSchema]]: ...
151 def send_sms_post(self, *args: Any, **kwds: Any) -> Any: ...
153 @overload
154 def check_balance(
155 self: 'LSIMSingleSMSClientClass[_Sync]',
156 login: str = base_env.LSIM_LOGIN,
157 password: str = base_env.LSIM_PASSWORD,
158 ) -> APIResponse[BaseGetResponseSchema]:
159 """LSIM balans sorğusu
161 **Endpoint:** */quicksms/v1/balance*
163 Example:
164 ```python
165 from integrify.lsim import LSIMSingleSMSClient
167 LSIMSingleSMSClient.check_balance()
168 ```
170 Cavab formatı: [`BaseGetResponseSchema`][integrify.lsim.single.schemas.response.BaseGetResponseSchema]
172 Bu sorğunu göndərdikdə, cavab olaraq `BaseGetResponseSchema` formatında
173 cavab gəlir, `obj` field-ində balans dəyəri gəlir.
175 Args:
176 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
177 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
178 """ # noqa: E501
180 @overload
181 def check_balance(
182 self: 'LSIMSingleSMSClientClass[_Async]',
183 login: str = base_env.LSIM_LOGIN,
184 password: str = base_env.LSIM_PASSWORD,
185 ) -> Coroutine[Any, Any, APIResponse[BaseGetResponseSchema]]: ...
186 def check_balance(self, *args: Any, **kwds: Any) -> Any: ...
188 @overload
189 def get_report_get(
190 self: 'LSIMSingleSMSClientClass[_Sync]',
191 trans_id: int,
192 login: str = base_env.LSIM_LOGIN,
193 ) -> APIResponse[ReportGetResponseSchema]:
194 """Göndərilmiş SMS-in reportunu alan GET sorğusu
196 **Endpoint:** */quicksms/v1/report*
198 Example:
199 ```python
200 from integrify.lsim import LSIMSingleSMSClient
202 LSIMSingleSMSClient.get_report_get(trans_id=1)
203 ```
205 Cavab formatı: [`ReportGetResponseSchema`][integrify.lsim.single.schemas.response.ReportGetResponseSchema]
207 Args:
208 trans_id: Uğurlu SMS göndərildikdə alınan transaction id
209 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
210 """ # noqa: E501
212 @overload
213 def get_report_get(
214 self: 'LSIMSingleSMSClientClass[_Async]',
215 trans_id: int,
216 login: str = base_env.LSIM_LOGIN,
217 ) -> Coroutine[Any, Any, APIResponse[ReportGetResponseSchema]]: ...
218 def get_report_get(self, *args: Any, **kwds: Any) -> Any: ...
220 @overload
221 def get_report_post(
222 self: 'LSIMSingleSMSClientClass[_Sync]',
223 trans_id: int,
224 login: str = base_env.LSIM_LOGIN,
225 ) -> APIResponse[ReportPostResponseSchema]:
226 """Göndərilmiş SMS-in reportunu alan POST sorğusu
228 **Endpoint:** */quicksms/v1/smsreporter*
230 Example:
231 ```python
232 from integrify.lsim import LSIMSingleSMSClient
234 LSIMSingleSMSClient.get_report_post(trans_id=1)
235 ```
237 Cavab formatı: [`ReportPostResponseSchema`][integrify.lsim.single.schemas.response.ReportPostResponseSchema]
239 Args:
240 trans_id: Uğurlu SMS göndərildikdə alınan transaction id
241 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
242 """ # noqa: E501
244 @overload
245 def get_report_post(
246 self: 'LSIMSingleSMSClientClass[_Async]',
247 trans_id: int,
248 login: str = base_env.LSIM_LOGIN,
249 ) -> Coroutine[Any, Any, APIResponse[ReportPostResponseSchema]]: ...
250 def get_report_post(self, *args: Any, **kwds: Any) -> Any: ...
253LSIMSingleSMSClient: 'LSIMSingleSMSClientClass[_Sync]' = LSIMSingleSMSClientClass()
254LSIMSingleSMSAsyncClient: 'LSIMSingleSMSClientClass[_Async]' = LSIMSingleSMSClientClass(sync=False)