Files
kis_bot/kiwoom_rest_api/config.py
2026-03-17 12:33:30 +09:00

61 lines
1.8 KiB
Python

import os
from typing import Optional
# Base URLs
DEFAULT_BASE_URL = os.environ.get("KIWOOM_DEFAULT_BASE_URL", "https://api.kiwoom.com")
SANDBOX_BASE_URL = os.environ.get("KIWOOM_SANDBOX_BASE_URL", "https://mockapi.kiwoom.com")
# WebSocket URLs
DEFAULT_WS_URL = os.environ.get("KIWOOM_DEFAULT_WS_URL", "wss://api.kiwoom.com:10000")
SANDBOX_WS_URL = os.environ.get("KIWOOM_SANDBOX_WS_URL", "wss://mockapi.kiwoom.com:10000")
WS_ENDPOINT = "/api/dostk/websocket"
# API Credentials
API_KEY = os.environ.get("KIWOOM_API_KEY", "")
API_SECRET = os.environ.get("KIWOOM_API_SECRET", "")
# Authentication
TOKEN_URL = "/oauth2/token"
AUTH_URL = "/oauth2/authorize"
# Timeouts
DEFAULT_TIMEOUT = 30.0 # seconds
WS_TIMEOUT = 10.0 # seconds
# Environment setting
USE_SANDBOX = os.environ.get("KIWOOM_USE_SANDBOX", "false").lower() == "true"
def get_base_url() -> str:
"""Return the base URL based on environment settings"""
if USE_SANDBOX:
return SANDBOX_BASE_URL
return DEFAULT_BASE_URL
def get_ws_url() -> str:
"""Return the WebSocket URL based on environment settings"""
base_ws_url = SANDBOX_WS_URL if USE_SANDBOX else DEFAULT_WS_URL
return f"{base_ws_url}{WS_ENDPOINT}"
def get_api_key() -> str:
"""Return the API key"""
return API_KEY
def get_api_secret() -> str:
"""Return the API secret"""
return API_SECRET
def get_headers(access_token: Optional[str] = None) -> dict:
"""Return common headers for API requests"""
headers = {
"Content-Type": "application/json;charset=UTF-8",
}
if access_token:
headers["Authorization"] = f"Bearer {access_token}"
else:
headers["appkey"] = get_api_key()
headers["appsecret"] = get_api_secret()
return headers