17 lines
796 B
Python
17 lines
796 B
Python
from pathlib import PurePosixPath
|
|
from typing import Sequence
|
|
from ..domain.models import Document, IngestionRequest
|
|
|
|
class GitHubConnector:
|
|
"""Small GitHub SCM adapter; transport is injected for testability."""
|
|
def __init__(self, token: str = "", transport=None):
|
|
self.token, self.transport = token, transport
|
|
|
|
def fetch(self, request: IngestionRequest) -> Sequence[Document]:
|
|
if self.transport is None:
|
|
return []
|
|
payload = self.transport(request.source.repository, request.source.path, request.source.revision, self.token)
|
|
if isinstance(payload, str):
|
|
payload = {"content": payload}
|
|
return [Document(request.source, payload.get("content", ""), {"provider": "github", "path": str(PurePosixPath(request.source.path))})]
|