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
« 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
6from integrify.epoint import env
7from integrify.epoint.schemas.callback import CallbackDataSchema, DecodedCallbackDataSchema
9__all__ = ['generate_signature', 'decode_callback_data']
11_sha1 = partial(sha1, usedforsecurity=False)
14def generate_signature(data: str) -> str:
15 """Sorğu data-sını hash və encode etmək üçün funksiya
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()
24def decode_callback_data(data: CallbackDataSchema) -> DecodedCallbackDataSchema:
25 """Callback-də gələn encoded datanı decode və signature verify etmək üçün funksiya
27 Args:
28 data: Callback datası
29 """
31 if data.signature != generate_signature(data.data):
32 return None # type: ignore[return-value]
34 return DecodedCallbackDataSchema.model_validate(json.loads(base64.b64decode(data.data)))