Coverage for src/integrify/lsim/single/client.py: 100%

23 statements  

« prev     ^ index     » next       coverage.py v7.9.2, created at 2025-09-01 02:22 +0000

1from datetime import datetime 

2from typing import TYPE_CHECKING, Union 

3 

4from integrify.api import APIClient 

5from integrify.lsim import env as base_env 

6from integrify.lsim.single import env 

7from integrify.lsim.single.handlers import ( 

8 CheckBalancePayloadHandler, 

9 GetReportGetPayloadHandler, 

10 GetReportPostPayloadHandler, 

11 SendSMSGetPayloadHandler, 

12 SendSMSPostPayloadHandler, 

13) 

14from integrify.lsim.single.schemas.response import ( 

15 BaseGetResponseSchema, 

16 BasePostResponseSchema, 

17 ReportGetResponseSchema, 

18 ReportPostResponseSchema, 

19) 

20from integrify.schemas import APIResponse 

21 

22 

23class LSIMSingleSMSClientClass(APIClient): 

24 def __init__( 

25 self, 

26 name='LSIM', 

27 base_url=env.API.BASE_URL, 

28 default_handler=None, 

29 sync=True, 

30 dry=False, 

31 ): 

32 super().__init__(name, base_url, default_handler, sync, dry) 

33 

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

35 self.add_handler('send_sms_get', SendSMSGetPayloadHandler) 

36 

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

38 self.add_handler('send_sms_post', SendSMSPostPayloadHandler) 

39 

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

41 self.add_handler('check_balance', CheckBalancePayloadHandler) 

42 

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

44 self.add_handler('get_report_get', GetReportGetPayloadHandler) 

45 

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

47 self.add_handler('get_report_post', GetReportPostPayloadHandler) 

48 

49 if TYPE_CHECKING: 

50 

51 def send_sms_get( 

52 self, 

53 msisdn: str, 

54 text: str, 

55 login: str = base_env.LSIM_LOGIN, # type: ignore[assignment] 

56 password: str = base_env.LSIM_PASSWORD, # type: ignore[assignment] 

57 sender: str = base_env.LSIM_SENDER_NAME, # type: ignore[assignment] 

58 unicode: bool = False, 

59 ) -> APIResponse[BaseGetResponseSchema]: 

60 """SMS göndərən GET sorğusu 

61 

62 **Endpoint:** */quicksms/v1/send* 

63 

64 Example: 

65 ```python 

66 from integrify.lsim import LSIMSingleSMSClient 

67 

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

69 ``` 

70 

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

72 

73 Bu sorğunu göndərdikdə, cavab olaraq `BaseGetResponseSchema` formatında 

74 cavab gəlir, və uğurlu olduqda, `obj` field-ində transaction_id dəyəri gəlir. 

75 

76 Args: 

77 msisdn: SMS göndəriləcək nömrə: ölkə kodu + operator kodu + nömrə: 99450XXXXXXX 

78 text: Mesaj məzmunu 

79 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir. 

80 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir. 

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

82 unicode: Mesajın unicode olub/olmaması. Əgər mesajda unikod simvollar (`ə`, `ş`, `ü` və s.) istifadə 

83 edirsizsə, `True` seçməlisiniz 

84 """ # noqa: E501 

85 

86 def send_sms_post( 

87 self, 

88 msisdn: str, 

89 text: str, 

90 login: str = base_env.LSIM_LOGIN, # type: ignore[assignment] 

91 password: str = base_env.LSIM_PASSWORD, # type: ignore[assignment] 

92 sender: str = base_env.LSIM_SENDER_NAME, # type: ignore[assignment] 

93 unicode: bool = False, 

94 scheduled: Union[str, datetime] = 'NOW', 

95 ) -> APIResponse[BasePostResponseSchema]: 

96 """SMS göndərən POST sorğusu 

97 

98 **Endpoint:** */quicksms/v1/smssender* 

99 

100 Example: 

101 ```python 

102 from integrify.lsim import LSIMSingleSMSClient 

103 

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

105 ``` 

106 

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

108 

109 Bu sorğunu göndərdikdə, cavab olaraq `BasePostResponseSchema` formatında 

110 cavab gəlir, və uğurlu olduqda, `obj` field-ində transaction_id dəyəri gəlir. 

111 

112 Args: 

113 msisdn: SMS göndəriləcək nömrə: ölkə kodu + operator kodu + nömrə: 99450XXXXXXX 

114 text: Mesaj məzmunu 

115 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir. 

116 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir. 

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

118 unicode: Mesajın unicode olub/olmaması. Əgər mesajda unikod simvollar (`ə`, `ş`, `ü` və s.) istifadə 

119 edirsizsə, `True` seçməlisiniz 

120 scheduled: Öncədən SMS göndərilməsi üçün seçilmiş zaman. Zamanı `2023-05-19 15:40:05` 

121 formatında verməlisiniz. Sahə boş qaldıqda, SMS sorğu atdığınız an gedəcək. 

122 """ # noqa: E501 

123 

124 def check_balance( 

125 self, 

126 login: str = base_env.LSIM_LOGIN, # type: ignore[assignment] 

127 password: str = base_env.LSIM_PASSWORD, # type: ignore[assignment] 

128 ) -> APIResponse[BaseGetResponseSchema]: 

129 """LSIM balans sorğusu 

130 

131 **Endpoint:** */quicksms/v1/balance* 

132 

133 Example: 

134 ```python 

135 from integrify.lsim import LSIMSingleSMSClient 

136 

137 LSIMSingleSMSClient.check_balance() 

138 ``` 

139 

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

141 

142 Bu sorğunu göndərdikdə, cavab olaraq `BaseGetResponseSchema` formatında 

143 cavab gəlir, `obj` field-ində balans dəyəri gəlir. 

144 

145 Args: 

146 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir. 

147 password: LSIM parolunuz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir. 

148 """ # noqa: E501 

149 

150 def get_report_get( 

151 self, 

152 trans_id: int, 

153 login: str = base_env.LSIM_LOGIN, # type: ignore[assignment] 

154 ) -> APIResponse[ReportGetResponseSchema]: 

155 """Göndərilmiş SMS-in reportunu alan GET sorğusu 

156 

157 **Endpoint:** */quicksms/v1/report* 

158 

159 Example: 

160 ```python 

161 from integrify.lsim import LSIMSingleSMSClient 

162 

163 LSIMSingleSMSClient.get_report_get(trans_id=1) 

164 ``` 

165 

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

167 

168 Args: 

169 trans_id: Uğurlu SMS göndərildikdə alınan transaction id 

170 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir. 

171 """ # noqa: E501 

172 

173 def get_report_post( 

174 self, 

175 trans_id: int, 

176 login: str = base_env.LSIM_LOGIN, # type: ignore[assignment] 

177 ) -> APIResponse[ReportPostResponseSchema]: 

178 """Göndərilmiş SMS-in reportunu alan POST sorğusu 

179 

180 **Endpoint:** */quicksms/v1/smsreporter* 

181 

182 Example: 

183 ```python 

184 from integrify.lsim import LSIMSingleSMSClient 

185 

186 LSIMSingleSMSClient.get_report_post(trans_id=1) 

187 ``` 

188 

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

190 

191 Args: 

192 trans_id: Uğurlu SMS göndərildikdə alınan transaction id 

193 login: LSIM logininiz. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir. 

194 """ # noqa: E501 

195 

196 

197LSIMSingleSMSClient = LSIMSingleSMSClientClass() 

198LSIMSingleSMSAsyncClient = LSIMSingleSMSClientClass(sync=False)