integrations.factory
integrations/factory.py
1""" 2integrations/factory.py 3""" 4 5from typing import TYPE_CHECKING, Literal, cast, overload 6 7from integrations.discord.adapter import ServiceAdapter as discord_adapter 8from integrations.slack.adapter import ServiceAdapter as slack_adapter 9from integrations.standard_io.adapter import ServiceAdapter as std_adapter 10from integrations.web.adapter import ServiceAdapter as web_adapter 11 12if TYPE_CHECKING: 13 from configparser import ConfigParser 14 15 from cls.config import AppConfig 16 from integrations.base.interface import AdapterInterface 17 18 19@overload 20def select_adapter( 21 selected_service: Literal["slack"], 22 conf: "AppConfig" 23) -> slack_adapter: 24 ... 25 26 27@overload 28def select_adapter( 29 selected_service: Literal["discord"], 30 conf: "AppConfig" 31) -> discord_adapter: 32 ... 33 34 35@overload 36def select_adapter( 37 selected_service: Literal["web"], 38 conf: "AppConfig" 39) -> web_adapter: 40 ... 41 42 43@overload 44def select_adapter( 45 selected_service: Literal["standard_io"], 46 conf: "AppConfig" 47) -> std_adapter: 48 ... 49 50 51def select_adapter(selected_service: str, conf: "AppConfig") -> "AdapterInterface": 52 """インターフェース選択 53 54 Args: 55 selected_service (str): 選択サービス 56 conf (AppConfig): 設定ファイル 57 58 Raises: 59 ValueError: 未定義サービス 60 61 Returns: 62 AdapterType: アダプタインターフェース 63 """ 64 65 parser = cast("ConfigParser", getattr(conf, "_parser")) 66 67 match selected_service: 68 case "slack": 69 return slack_adapter(parser) 70 case "discord": 71 return discord_adapter(parser) 72 case "web": 73 return web_adapter(parser) 74 case "standard_io": 75 return std_adapter(parser) 76 case _: 77 raise ValueError(f"Unknown service: {selected_service}")
def
select_adapter( selected_service: str, conf: cls.config.AppConfig) -> integrations.base.interface.AdapterInterface:
52def select_adapter(selected_service: str, conf: "AppConfig") -> "AdapterInterface": 53 """インターフェース選択 54 55 Args: 56 selected_service (str): 選択サービス 57 conf (AppConfig): 設定ファイル 58 59 Raises: 60 ValueError: 未定義サービス 61 62 Returns: 63 AdapterType: アダプタインターフェース 64 """ 65 66 parser = cast("ConfigParser", getattr(conf, "_parser")) 67 68 match selected_service: 69 case "slack": 70 return slack_adapter(parser) 71 case "discord": 72 return discord_adapter(parser) 73 case "web": 74 return web_adapter(parser) 75 case "standard_io": 76 return std_adapter(parser) 77 case _: 78 raise ValueError(f"Unknown service: {selected_service}")
インターフェース選択
Arguments:
- selected_service (str): 選択サービス
- conf (AppConfig): 設定ファイル
Raises:
- ValueError: 未定義サービス
Returns:
AdapterType: アダプタインターフェース