Coverage for src/integrify/lsim/single/schemas/request.py: 100%

29 statements  

« prev     ^ index     » next       coverage.py v7.9.2, created at 2025-09-01 02:22 +0000

1from hashlib import md5 

2 

3from pydantic import Field, computed_field 

4 

5from integrify.lsim import env 

6from integrify.lsim.types import DateTime 

7from integrify.schemas import PayloadBaseModel 

8 

9 

10class SendSMSGetRequestSchema(PayloadBaseModel): 

11 msisdn: str 

12 """SMS göndəriləcək nömrə: ölkə kodu + operator kodu + nömrə: 99450XXXXXXX""" 

13 

14 text: str 

15 """Mesaj məzmunu""" 

16 

17 # Not required 

18 login: str = Field(env.LSIM_LOGIN, validate_default=True) # type: ignore[assignment] 

19 password: str = Field(default=env.LSIM_PASSWORD, validate_default=True, exclude=True) # type: ignore[assignment] 

20 sender: str = env.LSIM_SENDER_NAME # type: ignore[assignment] 

21 """SMS göndərənin adı (LSIM tərəfindən təmin olunur)""" 

22 unicode: bool = False 

23 """Mesajın unicode olub/olmaması. Əgər mesajda unikod simvollar (`ə`, `ş`, `ü` və s.) istifadə 

24 edirsizsə, `True` seçməlisiniz.""" 

25 

26 @computed_field 

27 def key(self) -> str: 

28 """LSIM ucun key generasiyasi""" 

29 return md5( 

30 ( 

31 md5(self.password.encode(), usedforsecurity=False).hexdigest() # pylint: disable=no-member 

32 + self.login 

33 + self.text 

34 + self.msisdn 

35 + self.sender 

36 ).encode(), 

37 usedforsecurity=False, 

38 ).hexdigest() 

39 

40 

41class SendSMSPostRequestSchema(SendSMSGetRequestSchema): 

42 scheduled: DateTime 

43 

44 

45class CheckBalanceRequestSchema(PayloadBaseModel): 

46 login: str = Field(env.LSIM_LOGIN, validate_default=True) # type: ignore[assignment] 

47 password: str = Field(default=env.LSIM_PASSWORD, validate_default=True, exclude=True) # type: ignore[assignment] 

48 

49 @computed_field 

50 def key(self) -> str: 

51 """LSIM ucun key generasiyasi""" 

52 return md5( 

53 (md5(self.password.encode(), usedforsecurity=False).hexdigest() + self.login).encode(), # pylint: disable=no-member 

54 usedforsecurity=False, 

55 ).hexdigest() 

56 

57 

58class GetReportGetRequestSchema(PayloadBaseModel): 

59 trans_id: int 

60 """Uğurlu SMS göndərdikdə, yaradılan SMS ID-si""" 

61 

62 # Not required 

63 login: str = Field(env.LSIM_LOGIN, validate_default=True) # type: ignore[assignment] 

64 """Uğurlu SMS göndərildikdə alınan transaction id""" 

65 

66 

67class GetReportPostRequestSchema(GetReportGetRequestSchema): 

68 trans_id: int = Field(serialization_alias='transid')