Coverage for packages/lsim/src/integrify/lsim/single/handlers.py: 93%

27 statements  

« prev     ^ index     » next       coverage.py v7.16.0, created at 2026-10-19 02:39 +0000

1import json 

2 

3from integrify.api import APIPayloadHandler 

4from integrify.lsim.single.schemas.request import ( 

5 CheckBalanceRequestSchema, 

6 GetReportGetRequestSchema, 

7 GetReportPostRequestSchema, 

8 SendSMSGetRequestSchema, 

9 SendSMSPostRequestSchema, 

10) 

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

12 BaseGetResponseSchema, 

13 BasePostResponseSchema, 

14 ReportGetResponseSchema, 

15 ReportPostResponseSchema, 

16) 

17 

18 

19class SendSMSGetPayloadHandler(APIPayloadHandler): 

20 req_model = SendSMSGetRequestSchema 

21 resp_model = BaseGetResponseSchema 

22 

23 

24class SendSMSPostPayloadHandler(APIPayloadHandler): 

25 req_model = SendSMSPostRequestSchema 

26 resp_model = BasePostResponseSchema 

27 

28 

29class CheckBalancePayloadHandler(APIPayloadHandler): 

30 req_model = CheckBalanceRequestSchema 

31 resp_model = BaseGetResponseSchema 

32 

33 

34class GetReportGetPayloadHandler(APIPayloadHandler): 

35 req_model = GetReportGetRequestSchema 

36 resp_model = ReportGetResponseSchema 

37 

38 def handle_response(self, resp): 

39 # LSIM report GET endpoint-i body kimi tək bir kod (integer) qaytarır. 

40 # Onu düzgün JSON-a çeviririk. Əvvəlki versiya `f'{{"error_code": {data}}}'` 

41 # istifadə edirdi — body integer deyilsə (boş/mətn) yararsız JSON yaradıb crash edirdi. 

42 raw = resp.content.decode(errors='replace').strip() 

43 

44 try: 

45 error_code = int(raw) 

46 except (TypeError, ValueError): 

47 error_code = None 

48 

49 resp._content = json.dumps({'error_code': error_code}).encode() # pylint: disable=protected-access 

50 return super().handle_response(resp) 

51 

52 

53class GetReportPostPayloadHandler(APIPayloadHandler): 

54 req_model = GetReportPostRequestSchema 

55 resp_model = ReportPostResponseSchema