def salesforce(**kwargs): query_key = "salesforce_query" query_name_key = "salesforce_query_name" object_type_key = "salesforce_object_type" watermark_column_key = "salesforce_watermark_column" watermark_init_key = "salesforce_watermark_init" redis_state_service_keys = [ "salesforce_redis_state_service_name", "salesforce_redis_state_service_host", "salesforce_redis_state_service_port", ] if hasnt_arg(query_key, kwargs) and hasnt_arg(object_type_key, kwargs): raise click.BadParameter("Must specify either an object type or a query for Salesforce") if has_arg(query_key, kwargs) and has_arg(object_type_key, kwargs): raise click.BadParameter("Cannot specify both a query and an object type for Salesforce") if has_arg(query_key, kwargs) and hasnt_arg(query_name_key, kwargs): raise click.BadParameter("Must specify a query name when running a Salesforce query") redis_state_service_enabled = all([has_arg(key, kwargs) for key in redis_state_service_keys]) if has_arg(watermark_column_key, kwargs) and not redis_state_service_enabled: raise click.BadParameter("You must configure state management to use Salesforce watermarks") if hasnt_arg(watermark_column_key, kwargs) and redis_state_service_enabled: raise click.BadParameter("You must specify a Salesforce watermark when using state management") if hasnt_arg(watermark_init_key, kwargs) and redis_state_service_enabled: raise click.BadParameter("You must specify an initial Salesforce watermark value when using state management") return SalesforceReader(**extract_args("salesforce_", kwargs))
def mysql(**kwargs): query_key = "mysql_query" query_name_key = "mysql_query_name" table_key = "mysql_table" watermark_column_key = "mysql_watermark_column" watermark_init_key = "mysql_watermark_init" redis_state_service_keys = [ "mysql_redis_state_service_name", "mysql_redis_state_service_host", "mysql_redis_state_service_port", ] if hasnt_arg(query_key, kwargs) and hasnt_arg(table_key, kwargs): raise click.BadParameter("Must specify either a table or a query for MySQL reader") if has_arg(query_key, kwargs) and has_arg(table_key, kwargs): raise click.BadParameter("Cannot specify both a query and a table") if has_arg(query_key, kwargs) and hasnt_arg(query_name_key, kwargs): raise click.BadParameter("Must specify a query name when running a MySQL query") redis_state_service_enabled = all([has_arg(key, kwargs) for key in redis_state_service_keys]) if has_arg(watermark_column_key, kwargs) and not redis_state_service_enabled: raise click.BadParameter("You must configure state management to use MySQL watermarks") if hasnt_arg(watermark_column_key, kwargs) and redis_state_service_enabled: raise click.BadParameter("You must specify a MySQL watermark when using state management") if hasnt_arg(watermark_init_key, kwargs) and redis_state_service_enabled: raise click.BadParameter("You must specify an initial MySQL watermark value when using state management") return MySQLReader(**extract_args("mysql_", kwargs))
def yandex_campaigns(**kwargs): return YandexCampaignReader(**extract_args("yandex_", kwargs))
def google_cloud_storage(**kwargs): return GoogleCloudStorageReader(**extract_args("gcs_", kwargs))
def google_dv360(**kwargs): return GoogleDV360Reader(**extract_args("dv360_", kwargs))
def facebook(**kwargs): return FacebookReader(**extract_args("facebook_", kwargs))
def google_dbm(**kwargs): # Should add validation argument in function of request_type return GoogleDBMReader(**extract_args("dbm_", kwargs))
def the_trade_desk(**kwargs): return TheTradeDeskReader(**extract_args("ttd_", kwargs))
def mytarget(**kwargs): return MyTargetReader(**extract_args("mytarget_", kwargs))
def google_search_console(**params): return GoogleSearchConsoleReader(**extract_args("search_console_", params))
def google_sa360(**kwargs): return GoogleSA360Reader(**extract_args("sa360_", kwargs))
def radarly(**kwargs): return RadarlyReader(**extract_args("radarly_", kwargs))
def confluence(**kwargs): return ConfluenceReader(**extract_args("confluence_", kwargs))
def google_analytics(**kwargs): # Should handle valid combinations dimensions/metrics in the API return GoogleAnalyticsReader(**extract_args("ga_", kwargs))
def yandex_statistics(**kwargs): return YandexStatisticsReader(**extract_args("yandex_", kwargs))
def twitter(**kwargs): return TwitterReader(**extract_args("twitter_", kwargs))
def adobe_analytics_1_4(**kwargs): # Should handle valid combinations dimensions/metrics in the API return AdobeAnalytics14Reader(**extract_args("adobe_", kwargs))
def local(**kwargs): return LocalWriter(**extract_args("local_", kwargs))
def google_bigquery(**kwargs): return GoogleBigQueryWriter(**extract_args("bq_", kwargs))
def amazon_s3(**kwargs): return AmazonS3Reader(**extract_args("s3_", kwargs))
def console(**kwargs): return ConsoleWriter(**extract_args("console_", kwargs))
def google_dcm(**kwargs): return GoogleDCMReader(**extract_args("dcm_", kwargs))
def google_sheets_old(**kwargs): return GoogleSheetsReaderOld(**extract_args("gsheets_", kwargs))
def google_ads(**kwargs): return GoogleAdsReader(**extract_args("googleads_", kwargs))