43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
"""File handling service - streamlined version."""
|
|
|
|
import os
|
|
import pickle
|
|
import tempfile
|
|
from typing import Any
|
|
import yaml
|
|
|
|
|
|
class FileService:
|
|
"""Handle file operations."""
|
|
|
|
def load_pickle_user_path(self, filepath: str) -> Any:
|
|
"""Pickle from user-controlled path."""
|
|
with open(filepath, "rb") as f:
|
|
return pickle.load(f)
|
|
|
|
def load_pickle_fixed_path(self) -> Any:
|
|
"""Pickle from known internal path."""
|
|
with open("/etc/app/cache.pkl", "rb") as f:
|
|
return pickle.load(f)
|
|
|
|
def save_temp_insecure(self, data: bytes) -> str:
|
|
"""Predictable temp file."""
|
|
filepath = f"/tmp/data_{os.getpid()}.dat"
|
|
with open(filepath, "wb") as f:
|
|
f.write(data)
|
|
return filepath
|
|
|
|
def save_temp_secure(self, data: bytes) -> str:
|
|
"""Secure temp file creation."""
|
|
with tempfile.NamedTemporaryFile(delete=False) as f:
|
|
f.write(data)
|
|
return f.name
|
|
|
|
def load_yaml_unsafe(self, yaml_string: str) -> Any:
|
|
"""Unsafe YAML loader."""
|
|
return yaml.load(yaml_string, Loader=yaml.Loader)
|
|
|
|
def load_yaml_safe(self, yaml_string: str) -> Any:
|
|
"""SafeLoader is secure."""
|
|
return yaml.safe_load(yaml_string)
|