Coverage for packages/lsim/src/integrify/lsim/bulk/schemas/response.py: 100%
58 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
1from integrify.lsim.bulk.schemas.enums import Code, SMSStatus
2from pydantic import BaseModel, Field, model_validator
5class SendBulkSMSResponseSchema(BaseModel):
6 response_code: Code | int
7 """Sorğunun uğur(suz)luq kodu"""
9 task_id: int | None = None
10 """Sorğunun id-si. Bu id-ni report almaqda istifadə edə bilərsiniz"""
12 @model_validator(mode='before')
13 @classmethod
14 def dissect_data(cls, data: dict):
15 """Sorğunun cavabının strukturunu parçalayan funksiya"""
16 return {
17 'response_code': data['response']['head']['responsecode'],
18 'task_id': data['response'].get('body', {}).get('taskid'),
19 }
22class GetBulkSMSReportResponseSchema(BaseModel):
23 response_code: Code | int
24 """Sorğunun uğur(suz)luq kodu"""
26 expired: int = -1
27 """Vaxtı keçmiş SMS sayı"""
29 removed: int = -1
30 """Silinmiş SMS sayı"""
32 black_list: int = Field(-1, validation_alias='blackList')
33 """Qara list-ə düşmüş SMS sayı"""
35 undelivered: int = -1
36 """Göndərilməyən SMS sayı"""
38 delivered: int = -1
39 """Göndərilmiş və çatmış SMS sayı"""
41 duplicate: int = -1
42 """Təkrarlanan (duplikat) SMS sayı"""
44 error: int = -1
45 """Xətalı SMS sayı"""
47 send: int = -1
48 """Göndərilmiş SMS sayı"""
50 queue: int = -1
51 """Göndərilmə sırasında olan SMS sayı"""
53 @model_validator(mode='before')
54 @classmethod
55 def dissect_data(cls, data: dict):
56 """Sorğunun cavabının strukturunu parçalayan funksiya"""
57 return {
58 'response_code': data['response']['head']['responsecode'],
59 **data['response'].get('body', {}),
60 }
63class SMSReportSchema(BaseModel):
64 msisdn: int
65 message: str
66 status: SMSStatus
67 date: str | None = None
70class GetBulkSMSDetailedReportResponseSchema(BaseModel):
71 response_code: Code | str
72 """Sorğunun uğur(suz)luq kodu"""
74 body: list[SMSReportSchema]
76 @model_validator(mode='before')
77 @classmethod
78 def dissect_data(cls, data: dict):
79 """Sorğunun cavabının strukturunu parçalayan funksiya"""
80 return {
81 'response_code': int(data['response']['head']['responsecode']),
82 'body': data['response'].get('body', []),
83 }
86class GetBalanceResponseSchema(BaseModel):
87 response_code: Code | str
88 """Sorğunun uğur(suz)luq kodu"""
90 units: int
91 """Balans"""
93 @model_validator(mode='before')
94 @classmethod
95 def dissect_data(cls, data: dict):
96 """Sorğunun cavabının strukturunu parçalayan funksiya"""
97 return {
98 'response_code': data['response']['head']['responsecode'],
99 'units': data['response'].get('body', {}).get('units', -1),
100 }