Files
igncore/core/cache_service.py

35 lines
1.1 KiB
Python

import os
from pathlib import Path
from core.decorators import instance
from core.dict_object import DictObject
from core.logger import Logger
@instance()
class CacheService:
CACHE_DIR = os.sep + os.path.join("data", "cache")
def __init__(self):
Path(os.getcwd() + self.CACHE_DIR).mkdir(parents=True, exist_ok=True)
self.logger = Logger(__name__)
def store(self, group, filename, contents):
base_path = os.getcwd() + self.CACHE_DIR + os.sep + group
Path(base_path).mkdir(exist_ok=True)
with open(base_path + os.sep + filename, mode="w", encoding="UTF-8") as f:
f.write(contents)
def retrieve(self, group, filename):
base_path = os.getcwd() + self.CACHE_DIR + os.sep + group
full_path = base_path + os.sep + filename
try:
with open(full_path, mode="r", encoding="UTF-8") as f:
last_modified = int(os.path.getmtime(full_path))
return DictObject({"data": f.read(), "last_modified": last_modified})
except FileNotFoundError:
return None