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: アダプタインターフェース