mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-08-19 14:55:40 +08:00
166 lines
6.0 KiB
Python
166 lines
6.0 KiB
Python
"""
|
|
Thanks to https://github.com/onyx-dot-app/onyx
|
|
|
|
Content of this directory is under the "MIT Expat" license as defined below.
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
in the Software without restriction, including without limitation the rights
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in all
|
|
copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
SOFTWARE.
|
|
"""
|
|
|
|
from typing import Any
|
|
|
|
from common.constants import FileSource
|
|
|
|
from .airtable_connector import AirtableConnector
|
|
from .asana_connector import AsanaConnector
|
|
from .azure_blob_connector import AzureBlobConnector
|
|
from .bigquery_connector import BigQueryConnector
|
|
from .bitbucket.connector import BitbucketConnector
|
|
from .blob_connector import BlobStorageConnector
|
|
from .box_connector import BoxConnector
|
|
from .confluence_connector import ConfluenceConnector
|
|
from .config import BlobType, DocumentSource
|
|
from .dingtalk_ai_table_connector import DingTalkAITableConnector
|
|
from .discord_connector import DiscordConnector
|
|
from .dropbox_connector import DropboxConnector
|
|
from .exceptions import (
|
|
ConnectorMissingCredentialError,
|
|
ConnectorValidationError,
|
|
CredentialExpiredError,
|
|
InsufficientPermissionsError,
|
|
UnexpectedValidationError,
|
|
)
|
|
from .github.connector import GithubConnector
|
|
from .gitlab_connector import GitlabConnector
|
|
from .gmail_connector import GmailConnector
|
|
from .google_drive.connector import GoogleDriveConnector
|
|
from .imap_connector import ImapConnector
|
|
from .jira.connector import JiraConnector
|
|
from .models import BasicExpertInfo, Document, ImageSection, TextSection
|
|
from .moodle_connector import MoodleConnector
|
|
from .notion_connector import NotionConnector
|
|
from .onedrive_connector import OneDriveConnector
|
|
from .outlook_connector import OutlookConnector
|
|
from .rdbms_connector import RDBMSConnector
|
|
from .rest_api_connector import RestAPIConnector
|
|
from .rss_connector import RSSConnector
|
|
from .salesforce_connector import SalesforceConnector
|
|
from .seafile_connector import SeaFileConnector
|
|
from .sharepoint_connector import SharePointConnector
|
|
from .slack_connector import SlackConnector
|
|
from .teams_connector import TeamsConnector
|
|
from .webdav_connector import WebDAVConnector
|
|
from .zendesk_connector import ZendeskConnector
|
|
|
|
CONNECTOR_BY_SOURCE: dict[str, type] = {
|
|
FileSource.S3: BlobStorageConnector,
|
|
FileSource.R2: BlobStorageConnector,
|
|
FileSource.OCI_STORAGE: BlobStorageConnector,
|
|
FileSource.GOOGLE_CLOUD_STORAGE: BlobStorageConnector,
|
|
FileSource.RSS: RSSConnector,
|
|
FileSource.CONFLUENCE: ConfluenceConnector,
|
|
FileSource.NOTION: NotionConnector,
|
|
FileSource.DISCORD: DiscordConnector,
|
|
FileSource.GMAIL: GmailConnector,
|
|
FileSource.DROPBOX: DropboxConnector,
|
|
FileSource.GOOGLE_DRIVE: GoogleDriveConnector,
|
|
FileSource.JIRA: JiraConnector,
|
|
FileSource.SHAREPOINT: SharePointConnector,
|
|
FileSource.SLACK: SlackConnector,
|
|
FileSource.TEAMS: TeamsConnector,
|
|
FileSource.WEBDAV: WebDAVConnector,
|
|
FileSource.MOODLE: MoodleConnector,
|
|
FileSource.BOX: BoxConnector,
|
|
FileSource.AIRTABLE: AirtableConnector,
|
|
FileSource.ASANA: AsanaConnector,
|
|
FileSource.GITHUB: GithubConnector,
|
|
FileSource.IMAP: ImapConnector,
|
|
FileSource.ZENDESK: ZendeskConnector,
|
|
FileSource.GITLAB: GitlabConnector,
|
|
FileSource.BITBUCKET: BitbucketConnector,
|
|
FileSource.SEAFILE: SeaFileConnector,
|
|
FileSource.DINGTALK_AI_TABLE: DingTalkAITableConnector,
|
|
FileSource.MYSQL: RDBMSConnector,
|
|
FileSource.POSTGRESQL: RDBMSConnector,
|
|
FileSource.REST_API: RestAPIConnector,
|
|
FileSource.BIGQUERY: BigQueryConnector,
|
|
FileSource.ONEDRIVE: OneDriveConnector,
|
|
FileSource.OUTLOOK: OutlookConnector,
|
|
FileSource.SALESFORCE: SalesforceConnector,
|
|
FileSource.AZURE_BLOB: AzureBlobConnector,
|
|
}
|
|
|
|
|
|
def build_connector_for_source(source: str, config: dict[str, Any]) -> Any:
|
|
connector_cls = CONNECTOR_BY_SOURCE.get(source)
|
|
if connector_cls is None:
|
|
raise ConnectorValidationError(f"Unsupported data source type: {source}")
|
|
if connector_cls is BlobStorageConnector:
|
|
return connector_cls.build_connector(config, bucket_type=source)
|
|
if connector_cls is RDBMSConnector:
|
|
return connector_cls.build_connector(config, db_type=source)
|
|
return connector_cls.build_connector(config)
|
|
|
|
|
|
__all__ = [
|
|
"BlobStorageConnector",
|
|
"RSSConnector",
|
|
"SlackConnector",
|
|
"GmailConnector",
|
|
"NotionConnector",
|
|
"ConfluenceConnector",
|
|
"DiscordConnector",
|
|
"DropboxConnector",
|
|
"GoogleDriveConnector",
|
|
"JiraConnector",
|
|
"SharePointConnector",
|
|
"GithubConnector",
|
|
"GitlabConnector",
|
|
"BitbucketConnector",
|
|
"BoxConnector",
|
|
"OneDriveConnector",
|
|
"OutlookConnector",
|
|
"SalesforceConnector",
|
|
"AzureBlobConnector",
|
|
"TeamsConnector",
|
|
"MoodleConnector",
|
|
"BlobType",
|
|
"DocumentSource",
|
|
"Document",
|
|
"TextSection",
|
|
"ImageSection",
|
|
"BasicExpertInfo",
|
|
"ConnectorMissingCredentialError",
|
|
"ConnectorValidationError",
|
|
"CredentialExpiredError",
|
|
"InsufficientPermissionsError",
|
|
"UnexpectedValidationError",
|
|
"AirtableConnector",
|
|
"AsanaConnector",
|
|
"ImapConnector",
|
|
"ZendeskConnector",
|
|
"SeaFileConnector",
|
|
"RDBMSConnector",
|
|
"BigQueryConnector",
|
|
"WebDAVConnector",
|
|
"DingTalkAITableConnector",
|
|
"RestAPIConnector",
|
|
"CONNECTOR_BY_SOURCE",
|
|
"build_connector_for_source",
|
|
]
|