Coverage for packages/postaguvercini/src/integrify/postaguvercini/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 datetime import datetime
3from typing import TYPE_CHECKING, Any, Generic, overload
5from integrify.api import APIClient, _Async, _Mode, _Sync
6from integrify.postaguvercini import env
7from integrify.postaguvercini.handlers import (
8 CreditBalancePayloadHandler,
9 SendMultipleSMSPayloadHandler,
10 SendSingleSMSPayloadHandler,
11 StatusPayloadHandler,
12)
13from integrify.postaguvercini.schemas.enums import ChannelType
14from integrify.postaguvercini.schemas.request import SMSMessage
15from integrify.postaguvercini.schemas.response import (
16 CreditBalanceResponseSchema,
17 SendSMSResponseSchema,
18 StatusResponseSchema,
19)
20from integrify.schemas import APIResponse
21from integrify.utils import UNSET as _UNSET
22from integrify.utils import Unset as Unsettable
25class PostaGuverciniClientClass(APIClient, Generic[_Mode]):
26 """Posta Guvercini sorğular üçün baza class"""
28 def __init__(
29 self,
30 name='PostaGuvercini',
31 base_url=env.API.BASE_URL,
32 default_handler=None,
33 sync=True,
34 dry=False,
35 ):
36 super().__init__(name, base_url, default_handler, sync, dry)
38 self.add_url('send_single_sms', env.API.SEND_SINGLE_SMS, verb='POST')
39 self.add_handler('send_single_sms', SendSingleSMSPayloadHandler)
41 self.add_url('send_multiple_sms', env.API.SEND_MULTIPLE_SMS, verb='POST')
42 self.add_handler('send_multiple_sms', SendMultipleSMSPayloadHandler)
44 self.add_url('get_status', env.API.STATUS, verb='POST')
45 self.add_handler('get_status', StatusPayloadHandler)
47 self.add_url('credit_balance', env.API.CREDIT_BALANCE, verb='POST')
48 self.add_handler('credit_balance', CreditBalancePayloadHandler)
50 if TYPE_CHECKING:
51 # pylint: disable=missing-function-docstring,unused-argument
53 @overload
54 def send_single_sms(
55 self: 'PostaGuverciniClientClass[_Sync]',
56 message: str,
57 receivers: list[str],
58 send_date: Unsettable[str | datetime] = _UNSET,
59 expire_date: Unsettable[str | datetime] = _UNSET,
60 channel: ChannelType = ChannelType.OTP,
61 originator: Unsettable[str] = _UNSET,
62 username: str = env.POSTA_GUVERCINI_USERNAME,
63 password: str = env.POSTA_GUVERCINI_PASSWORD,
64 ) -> APIResponse[SendSMSResponseSchema]:
65 """Tək SMS göndərilməsi
67 **Endpoint:** */api_json/v1/Sms/Send_1_N*
69 Example:
70 ```python
71 from integrify.postaguvercini import PostaGuverciniClient
73 PostaGuverciniClient.send_single_sms(
74 message="Test SMS",
75 receivers=["905320000000"],
76 )
77 ```
79 **Cavab formatı**: [`SendSMSResponseSchema`][integrify.postaguvercini.schemas.response.SendSMSResponseSchema]
81 Bu sorğunu göndərdikdə, cavab olaraq SMS göndərilməsi haqqında məlumat gəlir.
83 Args:
84 message: SMS mətnini göstərir. Boş ola bilməz.
85 receivers: SMS qəbul edənləri göstərir. Boş ola bilməz.
86 send_date: SMS göndərilmə vaxtını göstərir. Boş olduqda dərhal sms göndəriləcək. Format: `yyyyMMdd HH:mm`
87 expire_date: Sonuncu dəfə SMS göndərilməyə cəhd ediləcəyini göstərir. Boş olduqda, sistem tərəfindən müəyyən edilmiş vaxt etibarlı olacaq. Format: `yyyyMMdd HH:mm`
88 channel: SMS-in göndərən ilə hansı platformada (OTP və ya BULK) göndəriləcəyini göstərir. Misal: OTP.
89 originator: Bu, tək hesabla müxtəlif göndəricilər altında sms göndərmək istənildikdə istifadə ediləcək bir sahədir. Göndəriləcək məlumat müştəri xidmətləri nümayəndəsi tərəfindən veriləcək və 11 simvol dəyərindədir.
90 username: Posta Guvercini hesabı adı. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
91 password: Posta Guvercini hesabı şifrəsi. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
92 """ # noqa: E501
94 @overload
95 def send_single_sms(
96 self: 'PostaGuverciniClientClass[_Async]',
97 message: str,
98 receivers: list[str],
99 send_date: Unsettable[str | datetime] = _UNSET,
100 expire_date: Unsettable[str | datetime] = _UNSET,
101 channel: ChannelType = ChannelType.OTP,
102 originator: Unsettable[str] = _UNSET,
103 username: str = env.POSTA_GUVERCINI_USERNAME,
104 password: str = env.POSTA_GUVERCINI_PASSWORD,
105 ) -> Coroutine[Any, Any, APIResponse[SendSMSResponseSchema]]: ...
106 def send_single_sms(self, *args: Any, **kwds: Any) -> Any: ...
108 @overload
109 def send_multiple_sms(
110 self: 'PostaGuverciniClientClass[_Sync]',
111 messages: list[SMSMessage],
112 send_date: Unsettable[str | datetime] = _UNSET,
113 expire_date: Unsettable[str | datetime] = _UNSET,
114 channel: ChannelType = ChannelType.OTP,
115 originator: Unsettable[str] = _UNSET,
116 username: str = env.POSTA_GUVERCINI_USERNAME,
117 password: str = env.POSTA_GUVERCINI_PASSWORD,
118 ) -> APIResponse[SendSMSResponseSchema]:
119 """Çoxlu SMS göndərilməsi
121 **Endpoint:** /api_json/v1/Sms/Send_N_N
123 Example:
124 ```python
125 from integrify.postaguvercini import PostaGuverciniClient
127 PostaGuverciniClient.send_multiple_sms(
128 messages=[
129 {"receiver": "905320000000", "message": "Test SMS 1"},
130 {"receiver": "905320000001", "message": "Test SMS 2"},
131 ],
132 )
133 ```
135 **Cavab formatı**: [`SendSMSResponseSchema`][integrify.postaguvercini.schemas.response.SendSMSResponseSchema]
137 Bu sorğunu göndərdikdə, cavab olaraq SMS göndərilməsi haqqında məlumat gəlir.
139 Args:
140 messages: SMS mətnini və qəbul edəni göstərir. Boş ola bilməz.
141 send_date: SMS göndərilmə vaxtını göstərir. Boş olduqda dərhal sms göndəriləcək. Format: `yyyyMMdd HH:mm`
142 expire_date: Sonuncu dəfə SMS göndərilməyə cəhd ediləcəyini göstərir. Boş olduqda, sistem tərəfindən müəyyən edilmiş vaxt etibarlı olacaq. Format: `yyyyMMdd HH:mm`
143 channel: SMS-in göndərən ilə hansı platformada (OTP və ya BULK) göndəriləcəyini göstərir. Misal: OTP.
144 originator: Bu, tək hesabla müxtəlif göndəricilər altında sms göndərmək istən
145 username: Posta Guvercini hesabı adı. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
146 password: Posta Guvercini hesabı şifrəsi. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
147 """ # noqa: E501
149 @overload
150 def send_multiple_sms(
151 self: 'PostaGuverciniClientClass[_Async]',
152 messages: list[SMSMessage],
153 send_date: Unsettable[str | datetime] = _UNSET,
154 expire_date: Unsettable[str | datetime] = _UNSET,
155 channel: ChannelType = ChannelType.OTP,
156 originator: Unsettable[str] = _UNSET,
157 username: str = env.POSTA_GUVERCINI_USERNAME,
158 password: str = env.POSTA_GUVERCINI_PASSWORD,
159 ) -> Coroutine[Any, Any, APIResponse[SendSMSResponseSchema]]: ...
160 def send_multiple_sms(self, *args: Any, **kwds: Any) -> Any: ...
162 @overload
163 def get_status(
164 self: 'PostaGuverciniClientClass[_Sync]',
165 message_ids: list[str],
166 username: str = env.POSTA_GUVERCINI_USERNAME,
167 password: str = env.POSTA_GUVERCINI_PASSWORD,
168 ) -> APIResponse[StatusResponseSchema]:
169 """SMS status sorğusu
171 **Endpoint:** /api_json/v1/Sms/Status
173 Example:
174 ```python
175 from integrify.postaguvercini import PostaGuverciniClient
177 PostaGuverciniClient.get_status(message_ids=["123456"])
178 ```
180 **Cavab formatı**: [`StatusResponseSchema`][integrify.postaguvercini.schemas.response.StatusResponseSchema]
182 Bu sorğunu göndərdikdə, cavab olaraq SMS statusu haqqında məlumat gəlir.
184 Args:
185 message_ids: SMS mesajlarının ID-ləri. Boş ola bilməz.
186 username: Posta Guvercini hesabı adı. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
187 password: Posta Guvercini hesabı şifrəsi. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
188 """ # noqa: E501
190 @overload
191 def get_status(
192 self: 'PostaGuverciniClientClass[_Async]',
193 message_ids: list[str],
194 username: str = env.POSTA_GUVERCINI_USERNAME,
195 password: str = env.POSTA_GUVERCINI_PASSWORD,
196 ) -> Coroutine[Any, Any, APIResponse[StatusResponseSchema]]: ...
197 def get_status(self, *args: Any, **kwds: Any) -> Any: ...
199 @overload
200 def credit_balance(
201 self: 'PostaGuverciniClientClass[_Sync]',
202 username: str = env.POSTA_GUVERCINI_USERNAME,
203 password: str = env.POSTA_GUVERCINI_PASSWORD,
204 ) -> APIResponse[CreditBalanceResponseSchema]:
205 """Kredit balans sorğusu
207 **Endpoint:** /api_json/v1/Sms/CreditBalance
209 Example:
210 ```python
211 from integrify.postaguvercini import PostaGuverciniClient
213 PostaGuverciniClient.credit_balance()
214 ```
216 **Cavab formatı**: [`CreditBalanceResponseSchema`][integrify.postaguvercini.schemas.response.CreditBalanceResponseSchema]
218 Bu sorğunu göndərdikdə, cavab olaraq kredit balans məlumatı gəlir.
220 Args:
221 username: Posta Guvercini hesabı adı. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
222 password: Posta Guvercini hesabı şifrəsi. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir.
223 """ # noqa: E501
225 @overload
226 def credit_balance(
227 self: 'PostaGuverciniClientClass[_Async]',
228 username: str = env.POSTA_GUVERCINI_USERNAME,
229 password: str = env.POSTA_GUVERCINI_PASSWORD,
230 ) -> Coroutine[Any, Any, APIResponse[CreditBalanceResponseSchema]]: ...
231 def credit_balance(self, *args: Any, **kwds: Any) -> Any: ...
234PostaGuverciniClient: 'PostaGuverciniClientClass[_Sync]' = PostaGuverciniClientClass(sync=True)
235PostaGuverciniAsyncClient: 'PostaGuverciniClientClass[_Async]' = PostaGuverciniClientClass(
236 sync=False
237)