first commit
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
"""Загрузка секретов: переменные окружения + файл .env в корне проекта.
|
||||
|
||||
Ключи НЕ хранятся в коде. Порядок:
|
||||
1) переменная окружения (OPENROUTER_API_KEY=...);
|
||||
2) файл .env в корне проекта (строка вида OPENROUTER_API_KEY=sk-or-...).
|
||||
|
||||
Файл .env.example — шаблон: cp .env.example .env и вписать свой ключ.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
_PROJECT_ROOT = Path(__file__).resolve().parents[2]
|
||||
|
||||
|
||||
def get_secret(name: str) -> str | None:
|
||||
"""Взять секрет из окружения или .env (первый источник побеждает)."""
|
||||
value = os.environ.get(name)
|
||||
if value:
|
||||
return value.strip()
|
||||
|
||||
env_file = _PROJECT_ROOT / ".env"
|
||||
if env_file.is_file():
|
||||
for line in env_file.read_text(encoding="utf-8").splitlines():
|
||||
line = line.strip()
|
||||
if not line or line.startswith("#") or "=" not in line:
|
||||
continue
|
||||
key, _, val = line.partition("=")
|
||||
if key.strip() == name:
|
||||
return val.strip().strip('"').strip("'")
|
||||
return None
|
||||
|
||||
|
||||
def get_api_key() -> str | None:
|
||||
return get_secret("OPENROUTER_API_KEY")
|
||||
Reference in New Issue
Block a user