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

1from collections.abc import Coroutine 

2from datetime import datetime 

3from typing import TYPE_CHECKING, Any, Generic, overload 

4 

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 

22 

23 

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) 

34 

35 self.add_url('send_sms_get', env.API.SEND_SMS_GET, verb='GET') 

36 self.add_handler('send_sms_get', SendSMSGetPayloadHandler) 

37 

38 self.add_url('send_sms_post', env.API.SEND_SMS_POST, verb='POST') 

39 self.add_handler('send_sms_post', SendSMSPostPayloadHandler) 

40 

41 self.add_url('check_balance', env.API.CHECK_BALANCE, verb='GET') 

42 self.add_handler('check_balance', CheckBalancePayloadHandler) 

43 

44 self.add_url('get_report_get', env.API.GET_REPORT_GET, verb='GET') 

45 self.add_handler('get_report_get', GetReportGetPayloadHandler) 

46 

47 self.add_url('get_report_post', env.API.GET_REPORT_POST, verb='POST') 

48 self.add_handler('get_report_post', GetReportPostPayloadHandler) 

49 

50 if TYPE_CHECKING: 

51 # pylint: disable=missing-function-docstring,unused-argument 

52 

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 

64 

65 **Endpoint:** */quicksms/v1/send* 

66 

67 Example: 

68 ```python 

69 from integrify.lsim import LSIMSingleSMSClient 

70 

71 LSIMSingleSMSClient.send_sms_get(msidn='99450XXXXXXX', text='test') 

72 ``` 

73 

74 Cavab formatı: [`BaseGetResponseSchema`][integrify.lsim.single.schemas.response.BaseGetResponseSchema] 

75 

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. 

78 

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 

88 

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: ... 

100 

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 

113 

114 **Endpoint:** */quicksms/v1/smssender* 

115 

116 Example: 

117 ```python 

118 from integrify.lsim import LSIMSingleSMSClient 

119 

120 LSIMSingleSMSClient.send_sms_post(msidn='99450XXXXXXX', text='test') 

121 ``` 

122 

123 Cavab formatı: [`BasePostResponseSchema`][integrify.lsim.single.schemas.response.BasePostResponseSchema] 

124 

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. 

127 

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 

139 

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: ... 

152 

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 

160 

161 **Endpoint:** */quicksms/v1/balance* 

162 

163 Example: 

164 ```python 

165 from integrify.lsim import LSIMSingleSMSClient 

166 

167 LSIMSingleSMSClient.check_balance() 

168 ``` 

169 

170 Cavab formatı: [`BaseGetResponseSchema`][integrify.lsim.single.schemas.response.BaseGetResponseSchema] 

171 

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. 

174 

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 

179 

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: ... 

187 

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 

195 

196 **Endpoint:** */quicksms/v1/report* 

197 

198 Example: 

199 ```python 

200 from integrify.lsim import LSIMSingleSMSClient 

201 

202 LSIMSingleSMSClient.get_report_get(trans_id=1) 

203 ``` 

204 

205 Cavab formatı: [`ReportGetResponseSchema`][integrify.lsim.single.schemas.response.ReportGetResponseSchema] 

206 

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 

211 

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: ... 

219 

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 

227 

228 **Endpoint:** */quicksms/v1/smsreporter* 

229 

230 Example: 

231 ```python 

232 from integrify.lsim import LSIMSingleSMSClient 

233 

234 LSIMSingleSMSClient.get_report_post(trans_id=1) 

235 ``` 

236 

237 Cavab formatı: [`ReportPostResponseSchema`][integrify.lsim.single.schemas.response.ReportPostResponseSchema] 

238 

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 

243 

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: ... 

251 

252 

253LSIMSingleSMSClient: 'LSIMSingleSMSClientClass[_Sync]' = LSIMSingleSMSClientClass() 

254LSIMSingleSMSAsyncClient: 'LSIMSingleSMSClientClass[_Async]' = LSIMSingleSMSClientClass(sync=False)