1
0
mirror of synced 2026-01-19 18:07:00 -05:00
Files
airbyte/airbyte-integrations/connectors/source-pardot/source_pardot/source.py
Cole Snodgrass 2e099acc52 update headers from 2022 -> 2023 (#22594)
* It's 2023!

* 2022 -> 2023

---------

Co-authored-by: evantahler <evan@airbyte.io>
2023-02-08 13:01:16 -08:00

49 lines
1.5 KiB
Python

#
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
#
from typing import Any, List, Mapping, Tuple
from airbyte_cdk.sources import AbstractSource
from airbyte_cdk.sources.streams import Stream
from airbyte_cdk.sources.streams.http.auth import TokenAuthenticator
from .api import Pardot
from .stream import Campaigns, EmailClicks, ListMembership, Lists, ProspectAccounts, Prospects, Users, VisitorActivities, Visitors, Visits
# Source
class SourcePardot(AbstractSource):
@staticmethod
def _get_pardot_object(config: Mapping[str, Any]) -> Pardot:
pardot = Pardot(**config)
pardot.login()
return pardot
def check_connection(self, logger, config) -> Tuple[bool, any]:
try:
pardot = self._get_pardot_object(config)
pardot.access_token
return True, None
except Exception as e:
return False, e
def streams(self, config: Mapping[str, Any]) -> List[Stream]:
pardot = self._get_pardot_object(config)
auth = TokenAuthenticator(pardot.access_token)
args = {"authenticator": auth, "config": config}
return [
EmailClicks(**args),
Campaigns(**args),
ListMembership(**args),
Lists(**args),
ProspectAccounts(**args),
Prospects(**args),
Users(**args),
VisitorActivities(**args),
Visitors(**args),
Visits(parent_stream=Visitors(**args), **args),
]