Files
mattermost-noti/lib/config.py

64 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_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()