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

1from collections.abc import Coroutine 

2from typing import TYPE_CHECKING, Any, Generic, overload 

3 

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 

22 

23 

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) 

34 

35 self.add_url('bulk_send_one_message', env.API.ENDPOINT, verb='POST') 

36 self.add_handler('bulk_send_one_message', SendBulkSMSOneMessagePayloadHandler) 

37 

38 self.add_url('bulk_send_different_messages', env.API.ENDPOINT, verb='POST') 

39 self.add_handler('bulk_send_different_messages', SendBulkSMSDifferentMessagesPayloadHandler) 

40 

41 self.add_url('get_report', env.API.ENDPOINT, verb='POST') 

42 self.add_handler('get_report', GetBulkSMSReportPayloadHandler) 

43 

44 self.add_url('get_detailed_report', env.API.ENDPOINT, verb='POST') 

45 self.add_handler('get_detailed_report', GetBulkSMSDeatiledReportPayloadHandler) 

46 

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 ) 

52 

53 self.add_url('check_balance', env.API.ENDPOINT, verb='POST') 

54 self.add_handler('check_balance', GetBalancePayloadHandler) 

55 

56 if TYPE_CHECKING: 

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

58 

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 

71 

72 **Endpoint:** */smxml/api* 

73 

74 Example: 

75 ```python 

76 from integrify.lsim import LSIMBulkSMSClient 

77 

78 LSIMBulkSMSClient.bulk_send_one_message(controlid=1, msisdns=['99450XXXXXXX'], bulkmessage='Hello world') 

79 ``` 

80 

81 Cavab formatı: [`SendBulkSMSResponseSchema`][integrify.lsim.bulk.schemas.response.SendBulkSMSResponseSchema] 

82 

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 

93 

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

106 

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 

119 

120 **Endpoint:** */smxml/api* 

121 

122 Example: 

123 ```python 

124 from integrify.lsim import LSIMBulkSMSClient 

125 

126 LSIMBulkSMSClient.bulk_send_one_message(controlid=1, msisdns=['99450XXXXXXX', '99451XXXXXXX'], 

127 messages=['Hello world 1', 'Hello world 2']) 

128 ``` 

129 

130 Cavab formatı: [`SendBulkSMSResponseSchema`][integrify.lsim.bulk.schemas.response.SendBulkSMSResponseSchema] 

131 

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 

142 

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

155 

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 

164 

165 **Endpoint:** */smxml/api* 

166 

167 Example: 

168 ```python 

169 from integrify.lsim import LSIMBulkSMSClient 

170 

171 LSIMBulkSMSClient.get_report(taskid=1) 

172 ``` 

173 

174 Cavab formatı: [`GetBulkSMSReportResponseSchema`][integrify.lsim.bulk.schemas.response.GetBulkSMSReportResponseSchema] 

175 

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 

181 

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

190 

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 

199 

200 **Endpoint:** */smxml/api* 

201 

202 Example: 

203 ```python 

204 from integrify.lsim import LSIMBulkSMSClient 

205 

206 LSIMBulkSMSClient.get_detailed_report(taskid=1) 

207 ``` 

208 

209 Cavab formatı: [`GetBulkSMSDetailedReportResponseSchema`][integrify.lsim.bulk.schemas.response.GetBulkSMSDetailedReportResponseSchema] 

210 

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 

216 

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

225 

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 

234 

235 **Endpoint:** */smxml/api* 

236 

237 Example: 

238 ```python 

239 from integrify.lsim import LSIMBulkSMSClient 

240 

241 LSIMBulkSMSClient.get_detailed_report_with_dates(taskid=1) 

242 ``` 

243 

244 Cavab formatı: [`GetBulkSMSDetailedReportResponseSchema`][integrify.lsim.bulk.schemas.response.GetBulkSMSDetailedReportResponseSchema] 

245 

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 

251 

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

260 

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 

268 

269 **Endpoint:** */smxml/api* 

270 

271 Example: 

272 ```python 

273 from integrify.lsim import LSIMBulkSMSClient 

274 

275 LSIMBulkSMSClient.check_balance() 

276 ``` 

277 

278 Cavab formatı: [`GetBalanceResponseSchema`][integrify.lsim.bulk.schemas.response.GetBalanceResponseSchema] 

279 

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 

284 

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

292 

293 

294LSIMBulkSMSClient: 'LSIMBulkSMSClientClass[_Sync]' = LSIMBulkSMSClientClass() 

295LSIMBulkSMSAsyncClient: 'LSIMBulkSMSClientClass[_Async]' = LSIMBulkSMSClientClass(sync=False)