Coverage for src/integrify/lsim/bulk/schemas/response.py: 100%
44 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-09-01 02:22 +0000
« prev ^ index » next coverage.py v7.9.2, created at 2025-09-01 02:22 +0000
1from typing import Optional, Union
3from pydantic import BaseModel, Field, model_validator
5from integrify.lsim.bulk.schemas.enums import Code, SMSStatus
8class SendBulkSMSResponseSchema(BaseModel):
9 response_code: Union[Code, int]
10 """Sorğunun uğur(suz)luq kodu"""
12 task_id: Optional[int] = None
13 """Sorğunun id-si. Bu id-ni report almaqda istifadə edə bilərsiniz"""
15 @model_validator(mode='before')
16 @classmethod
17 def dissect_data(cls, data: dict):
18 """Sorğunun cavabının strukturunu parçalayan funksiya"""
19 return {
20 'response_code': data['response']['head']['responsecode'],
21 'task_id': data['response'].get('body', {}).get('taskid'),
22 }
25class GetBulkSMSReportResponseSchema(BaseModel):
26 response_code: Union[Code, int]
27 """Sorğunun uğur(suz)luq kodu"""
29 expired: int = -1
30 """Vaxtı keçmiş SMS sayı"""
32 removed: int = -1
33 """Silinmiş SMS sayı"""
35 black_list: int = Field(-1, validation_alias='blackList')
36 """Qara list-ə düşmüş SMS sayı"""
38 undelivered: int = -1
39 """Göndərilməyən SMS sayı"""
41 delivered: int = -1
42 """Göndərilmiş və çatmış SMS sayı"""
44 duplicate: int = -1
45 """Təkrarlanan (duplikat) SMS sayı"""
47 error: int = -1
48 """Xətalı SMS sayı"""
50 send: int = -1
51 """Göndərilmiş SMS sayı"""
53 queue: int = -1
54 """Göndərilmə sırasında olan SMS sayı"""
56 @model_validator(mode='before')
57 @classmethod
58 def dissect_data(cls, data: dict):
59 """Sorğunun cavabının strukturunu parçalayan funksiya"""
60 return {
61 'response_code': data['response']['head']['responsecode'],
62 **data['response'].get('body', {}),
63 }
66class SMSReportSchema(BaseModel):
67 msisdn: int
68 message: str
69 status: SMSStatus
70 date: Optional[str] = None
73class GetBulkSMSDetailedReportResponseSchema(BaseModel):
74 response_code: Union[Code, str]
75 """Sorğunun uğur(suz)luq kodu"""
77 body: list[SMSReportSchema]
79 @model_validator(mode='before')
80 @classmethod
81 def dissect_data(cls, data: dict):
82 """Sorğunun cavabının strukturunu parçalayan funksiya"""
83 return {
84 'response_code': int(data['response']['head']['responsecode']),
85 'body': data['response'].get('body', []),
86 }
89class GetBalanceResponseSchema(BaseModel):
90 response_code: Union[Code, str]
91 """Sorğunun uğur(suz)luq kodu"""
93 units: int
94 """Balans"""
96 @model_validator(mode='before')
97 @classmethod
98 def dissect_data(cls, data: dict):
99 """Sorğunun cavabının strukturunu parçalayan funksiya"""
100 return {
101 'response_code': data['response']['head']['responsecode'],
102 'units': data['response'].get('body', {}).get('units', -1),
103 }