old_console/storage/services.py
2024-11-02 14:12:45 +03:00

37 lines
1 KiB
Python

import os
import subprocess
from storage.enums import CrcType
def get_json_crc(file_path, crc_type):
return {'type': crc_type, 'crc': get_file_crc(file_path, crc_type)}
def get_file_crc(file_path, crc_type):
""" Calculate file CRC
:param file_path: File, we need to calculate
:param crc_type: Type of CRC
:return: Calculated CRC
"""
if not os.path.exists(file_path):
raise RuntimeError('No such file ' + file_path)
if crc_type in CrcType.values:
return subprocess.run([crc_type, file_path], stdout=subprocess.PIPE).stdout.decode('utf-8').split(' ')[0]
raise RuntimeError('Bad CRC name ' + crc_type)
def verify_file(file_path, crc, crc_type):
""" Verify file CRC
:param file_path: File, we need validate with full path
:param crc: Saved CRC
:param crc_type: Type of CRC
:return:True if CRC is valid
"""
return crc == get_file_crc(file_path, crc_type)
def verify_file_from_json(file_path, obj):
return verify_file(file_path, obj['crc'], obj['type'])