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
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-19 02:39 +0000
1import json
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)
19class SendSMSGetPayloadHandler(APIPayloadHandler):
20 req_model = SendSMSGetRequestSchema
21 resp_model = BaseGetResponseSchema
24class SendSMSPostPayloadHandler(APIPayloadHandler):
25 req_model = SendSMSPostRequestSchema
26 resp_model = BasePostResponseSchema
29class CheckBalancePayloadHandler(APIPayloadHandler):
30 req_model = CheckBalanceRequestSchema
31 resp_model = BaseGetResponseSchema
34class GetReportGetPayloadHandler(APIPayloadHandler):
35 req_model = GetReportGetRequestSchema
36 resp_model = ReportGetResponseSchema
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()
44 try:
45 error_code = int(raw)
46 except (TypeError, ValueError):
47 error_code = None
49 resp._content = json.dumps({'error_code': error_code}).encode() # pylint: disable=protected-access
50 return super().handle_response(resp)
53class GetReportPostPayloadHandler(APIPayloadHandler):
54 req_model = GetReportPostRequestSchema
55 resp_model = ReportPostResponseSchema