Skip to content

Commit 337a703

Browse files
Merge pull request #14 from Querent-ai/connector_base
Added Connector base
2 parents 053cab2 + 08e3e2b commit 337a703

File tree

5 files changed

+62
-0
lines changed

5 files changed

+62
-0
lines changed
+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from typing import List, Dict
2+
from pathlib import Path
3+
from enum import Enum
4+
5+
class ConnectorErrorKind(Enum):
6+
NotFound = "not_found"
7+
Unauthorized = "unauthorized"
8+
Service = "noincompatible"
9+
10+
11+
12+
class ConnectorResolverError(Exception):
13+
def __init__(self, kind: ConnectorErrorKind, message: str):
14+
super().__init__(message)
15+
self.kind = kind
16+
17+
18+
class ConnectorError(Exception):
19+
def __init__(self, kind: ConnectorErrorKind, source: any):
20+
self.kind = kind
21+
self.source = source
22+
23+
24+
class NotFoundError(ConnectorError):
25+
def __init__(self, message: str):
26+
super().__init__(ConnectorErrorKind.NotFound, message)
27+
28+
class unauthorizedError(ConnectorError):
29+
def __init__(self, message: str):
30+
super().__init__(ConnectorErrorKind.unauthorized, message)
31+
32+
33+
class incompatibleError(ConnectorError):
34+
def __init__(self, message: str):
35+
super().__init__(ConnectorErrorKind.incompatible, message)

querent/connectors/connector_base.py

Whitespace-only changes.

querent/connectors/connector_factory.py

Whitespace-only changes.
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from typing import Dict, Optional, Union
2+
from querent.config.connector_config import ConnectorBackend
3+
from querent.connectors.connector_base import Connector
4+
from querent.connectors.connector_errors import ConnectorResolverError, ConnectorErrorKind
5+
from querent.common.uri import Protocol, Uri
6+
from querent.connectors.connector_factory import ConnectorFactory
7+
class ConnectorResolver:
8+
def __init__(self):
9+
pass
10+
11+
def resolve(self, src_uri: Uri, dest_uri: Uri) -> Optional[Connector]:
12+
src_backend = self._determine_backend(src_uri.protocol)
13+
dest_backend = self._determine_backend(src_dest.protocol)
14+
if backend in self.connector_factories:
15+
return self.connector_factories[src_backend].resolve(uri),
16+
else:
17+
raise ConnectorResolverError(
18+
ConnectorErrorKind.NotSupported, backend, "Unsupported backend"
19+
)
20+
21+
def _determine_backend(self, protocol: Protocol) -> ConnectorBackend:
22+
if protocol.is_file_Connector():
23+
return ConnectorBackend.LocalFile
24+
else:
25+
raise ConnectorResolverError(
26+
ConnectorErrorKind.NotSupported, "Unknown backend", "Unknown backend"
27+
)

0 commit comments

Comments
 (0)