# This file was auto-generated by Fern from our API Definition.

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class ConfigurableDataSourceNames(str, enum.Enum):
    S_3 = "S3"
    AZURE_STORAGE_BLOB = "AZURE_STORAGE_BLOB"
    GOOGLE_DRIVE = "GOOGLE_DRIVE"
    MICROSOFT_ONEDRIVE = "MICROSOFT_ONEDRIVE"
    MICROSOFT_SHAREPOINT = "MICROSOFT_SHAREPOINT"
    SLACK = "SLACK"
    NOTION_PAGE = "NOTION_PAGE"
    CONFLUENCE = "CONFLUENCE"
    JIRA = "JIRA"
    BOX = "BOX"

    def visit(
        self,
        s_3: typing.Callable[[], T_Result],
        azure_storage_blob: typing.Callable[[], T_Result],
        google_drive: typing.Callable[[], T_Result],
        microsoft_onedrive: typing.Callable[[], T_Result],
        microsoft_sharepoint: typing.Callable[[], T_Result],
        slack: typing.Callable[[], T_Result],
        notion_page: typing.Callable[[], T_Result],
        confluence: typing.Callable[[], T_Result],
        jira: typing.Callable[[], T_Result],
        box: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is ConfigurableDataSourceNames.S_3:
            return s_3()
        if self is ConfigurableDataSourceNames.AZURE_STORAGE_BLOB:
            return azure_storage_blob()
        if self is ConfigurableDataSourceNames.GOOGLE_DRIVE:
            return google_drive()
        if self is ConfigurableDataSourceNames.MICROSOFT_ONEDRIVE:
            return microsoft_onedrive()
        if self is ConfigurableDataSourceNames.MICROSOFT_SHAREPOINT:
            return microsoft_sharepoint()
        if self is ConfigurableDataSourceNames.SLACK:
            return slack()
        if self is ConfigurableDataSourceNames.NOTION_PAGE:
            return notion_page()
        if self is ConfigurableDataSourceNames.CONFLUENCE:
            return confluence()
        if self is ConfigurableDataSourceNames.JIRA:
            return jira()
        if self is ConfigurableDataSourceNames.BOX:
            return box()
