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

1from integrify.lsim.bulk.schemas.enums import Code, SMSStatus 

2from pydantic import BaseModel, Field, model_validator 

3 

4 

5class SendBulkSMSResponseSchema(BaseModel): 

6 response_code: Code | int 

7 """Sorğunun uğur(suz)luq kodu""" 

8 

9 task_id: int | None = None 

10 """Sorğunun id-si. Bu id-ni report almaqda istifadə edə bilərsiniz""" 

11 

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 } 

20 

21 

22class GetBulkSMSReportResponseSchema(BaseModel): 

23 response_code: Code | int 

24 """Sorğunun uğur(suz)luq kodu""" 

25 

26 expired: int = -1 

27 """Vaxtı keçmiş SMS sayı""" 

28 

29 removed: int = -1 

30 """Silinmiş SMS sayı""" 

31 

32 black_list: int = Field(-1, validation_alias='blackList') 

33 """Qara list-ə düşmüş SMS sayı""" 

34 

35 undelivered: int = -1 

36 """Göndərilməyən SMS sayı""" 

37 

38 delivered: int = -1 

39 """Göndərilmiş və çatmış SMS sayı""" 

40 

41 duplicate: int = -1 

42 """Təkrarlanan (duplikat) SMS sayı""" 

43 

44 error: int = -1 

45 """Xətalı SMS sayı""" 

46 

47 send: int = -1 

48 """Göndərilmiş SMS sayı""" 

49 

50 queue: int = -1 

51 """Göndərilmə sırasında olan SMS sayı""" 

52 

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 } 

61 

62 

63class SMSReportSchema(BaseModel): 

64 msisdn: int 

65 message: str 

66 status: SMSStatus 

67 date: str | None = None 

68 

69 

70class GetBulkSMSDetailedReportResponseSchema(BaseModel): 

71 response_code: Code | str 

72 """Sorğunun uğur(suz)luq kodu""" 

73 

74 body: list[SMSReportSchema] 

75 

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 } 

84 

85 

86class GetBalanceResponseSchema(BaseModel): 

87 response_code: Code | str 

88 """Sorğunun uğur(suz)luq kodu""" 

89 

90 units: int 

91 """Balans""" 

92 

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 }