37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
import pkgutil
|
|
import time
|
|
from typing import Generator
|
|
|
|
from airbyte_protocol import AirbyteCatalog
|
|
from airbyte_protocol import AirbyteCheckResponse
|
|
from airbyte_protocol import AirbyteMessage
|
|
from airbyte_protocol import AirbyteRecordMessage
|
|
from airbyte_protocol import AirbyteSpec
|
|
from airbyte_protocol import AirbyteStateMessage
|
|
from airbyte_protocol import Source
|
|
|
|
|
|
class TemplatePythonSource(Source):
|
|
def __init__(self):
|
|
pass
|
|
|
|
def check(self, logger, config_container) -> AirbyteCheckResponse:
|
|
logger.info(f'Checking configuration ({config_container.rendered_config_path})...')
|
|
return AirbyteCheckResponse(True, {})
|
|
|
|
def discover(self, logger, config_container) -> AirbyteCatalog:
|
|
logger.info(f'Discovering ({config_container.rendered_config_path})...')
|
|
return AirbyteCatalog.from_json(pkgutil.get_data(__name__, 'catalog.json'))
|
|
|
|
def read(self, logger, config_container, catalog_path, state=None) -> Generator[AirbyteMessage, None, None]:
|
|
logger.info(f'Reading ({config_container.rendered_config_path}, {catalog_path}, {state})...')
|
|
|
|
message = AirbyteRecordMessage(
|
|
stream='love_airbyte',
|
|
data={'love': True},
|
|
emitted_at=int(time.time() * 1000))
|
|
yield AirbyteMessage(type='RECORD', record=message)
|
|
|
|
state = AirbyteStateMessage(data={'love_cursor': 'next_version'})
|
|
yield AirbyteMessage(type='STATE', state=state)
|