66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
import os
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
|
|
class Config:
|
|
# 서버 설정
|
|
SERVER_DOMAIN = os.getenv('SERVER_DOMAIN', 'localhost')
|
|
SERVER_PROTOCOL = os.getenv('SERVER_PROTOCOL', 'http')
|
|
WEBHOOK_SERVER_HOST = os.getenv('WEBHOOK_SERVER_HOST', '0.0.0.0')
|
|
WEBHOOK_SERVER_PORT = int(os.getenv('WEBHOOK_SERVER_PORT', 5000))
|
|
|
|
# 노션 API
|
|
NOTION_API_SECRET = os.getenv('NOTION_API_SECRET')
|
|
NOTION_API_BASE = "https://api.notion.com/v1"
|
|
NOTION_VERSION = "2022-06-28"
|
|
|
|
# 웹훅 서명 검증용 비밀키 (옵션)
|
|
NOTION_WEBHOOK_SECRET = os.getenv('NOTION_WEBHOOK_SECRET', None)
|
|
|
|
# Mattermost 관련
|
|
MATTERMOST_SERVER_URL = os.getenv('MATTERMOST_SERVER_URL', '').rstrip('/')
|
|
MATTERMOST_WEBHOOK_URL = os.getenv('MATTERMOST_WEBHOOK_URL')
|
|
MATTERMOST_BOT_TOKEN = os.getenv('MATTERMOST_BOT_TOKEN')
|
|
MATTERMOST_CH_ID = os.getenv('MATTERMOST_CH_ID')
|
|
|
|
# 기타 설정
|
|
DEBUG = os.getenv('DEBUG', 'false').lower() in ['true', '1', 'yes']
|
|
LOG_LEVEL = os.getenv('LOG_LEVEL', 'INFO')
|
|
|
|
@classmethod
|
|
def mattermost_post_api_url(cls):
|
|
if cls.MATTERMOST_SERVER_URL:
|
|
return f"{cls.MATTERMOST_SERVER_URL}/api/v4/posts"
|
|
return None
|
|
|
|
@classmethod
|
|
def validate(cls):
|
|
missing = []
|
|
|
|
# NOTION_API_SECRET 필수 확인
|
|
if not cls.NOTION_API_SECRET:
|
|
missing.append('NOTION_API_SECRET')
|
|
|
|
# Mattermost는 둘 중 하나 이상 설정 필수
|
|
if not cls.MATTERMOST_WEBHOOK_URL and not (cls.MATTERMOST_BOT_TOKEN and cls.MATTERMOST_CH_ID):
|
|
if not cls.MATTERMOST_WEBHOOK_URL:
|
|
missing.append('MATTERMOST_WEBHOOK_URL')
|
|
if not cls.MATTERMOST_BOT_TOKEN:
|
|
missing.append('MATTERMOST_BOT_TOKEN')
|
|
if not cls.MATTERMOST_CH_ID:
|
|
missing.append('MATTERMOST_CH_ID')
|
|
|
|
if missing:
|
|
err_msg = (
|
|
f"환경변수 설정 오류: 아래 필수 항목이 누락되었습니다:\n"
|
|
+ "\n".join(f" - {var}" for var in missing)
|
|
+ "\n설정 후 다시 실행해주세요."
|
|
)
|
|
raise EnvironmentError(err_msg)
|
|
else:
|
|
print("필수 항목 검증 완료")
|
|
|
|
# 초기 검증 실행
|
|
Config.validate()
|