Coverage for src/integrify/epoint/helper.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.6.10, created at 2025-02-10 00:57 +0000

1import base64 

2import json 

3from functools import partial 

4from hashlib import sha1 

5 

6from integrify.epoint import env 

7from integrify.epoint.schemas.callback import CallbackDataSchema, DecodedCallbackDataSchema 

8 

9__all__ = ['generate_signature', 'decode_callback_data'] 

10 

11_sha1 = partial(sha1, usedforsecurity=False) 

12 

13 

14def generate_signature(data: str) -> str: 

15 """Sorğu data-sını hash və encode etmək üçün funksiya 

16 

17 Args: 

18 data: Sorğu data-sı 

19 """ 

20 sgn_string = env.EPOINT_PRIVATE_KEY + data + env.EPOINT_PRIVATE_KEY 

21 return base64.b64encode(_sha1(string=sgn_string.encode()).digest()).decode() 

22 

23 

24def decode_callback_data(data: CallbackDataSchema) -> DecodedCallbackDataSchema: 

25 """Callback-də gələn encoded datanı decode və signature verify etmək üçün funksiya 

26 

27 Args: 

28 data: Callback datası 

29 """ 

30 

31 if data.signature != generate_signature(data.data): 

32 return None # type: ignore[return-value] 

33 

34 return DecodedCallbackDataSchema.model_validate(json.loads(base64.b64decode(data.data)))