sky-meilin's picture
Create utils.py
0c96a32 verified
Raw History Blame
2.78 kB
"""
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",
}