""" utils.py SkyOS Google Utilities Gemeinsame Hilfsfunktionen für alle Google-Module. Autor: Sky Meilin Projekt: SkyOS Full Core """ from __future__ import annotations import logging import re from datetime import datetime from pathlib import Path from typing import Any logger = logging.getLogger("SkyOS.GoogleUtils") # ------------------------------------------------- # Datum & Zeit # ------------------------------------------------- def iso_now() -> str: """Aktuelle UTC-Zeit im ISO-8601-Format.""" return datetime.utcnow().replace(microsecond=0).isoformat() + "Z" def format_datetime(dt: datetime) -> str: """Konvertiert datetime in ISO-8601.""" return dt.isoformat() # ------------------------------------------------- # Dateinamen # ------------------------------------------------- def sanitize_filename(filename: str) -> str: """Entfernt ungültige Zeichen aus Dateinamen.""" filename = re.sub(r'[<>:"/\\|?*]', "_", filename) filename = filename.strip() return filename def file_extension(path: str) -> str: """Gibt die Dateiendung zurück.""" return Path(path).suffix.lower() # ------------------------------------------------- # Google IDs # ------------------------------------------------- def is_google_id(value: str) -> bool: """ Einfache Prüfung, ob ein String wie eine Google-ID aussieht. """ return ( isinstance(value, str) and len(value) > 20 ) # ------------------------------------------------- # API Antworten # ------------------------------------------------- def success(data: Any = None, message: str = "OK") -> dict: """Standardisierte Erfolgsausgabe.""" return { "success": True, "message": message, "data": data, } def error(message: str, exception: Exception | None = None) -> dict: """Standardisierte Fehlerausgabe.""" logger.error(message) return { "success": False, "message": message, "error": str(exception) if exception else None, } # ------------------------------------------------- # Logging # ------------------------------------------------- def log_api_call(service: str, action: str): logger.info( "[%s] %s", service.upper(), action, ) # ------------------------------------------------- # MIME Types # ------------------------------------------------- GOOGLE_MIME_TYPES = { "document": "application/vnd.google-apps.document", "spreadsheet": "application/vnd.google-apps.spreadsheet", "folder": "application/vnd.google-apps.folder", "presentation": "application/vnd.google-apps.presentation", "drawing": "application/vnd.google-apps.drawing", }