public TableauMigrationService( IOptionsMonitor <TableauMigrationSettings> settingsMonitor, ITableauApiServiceSource tableauApiServiceSource, ITableauApiServiceDestination tableauApiServiceDestination, IVizDatasourceService vizDatasourceService, ILogger logger = null ) { _settingsMonitor = settingsMonitor ?? throw new ArgumentNullException("Missing Tableau Migration settings"); _tableauApiServiceSource = tableauApiServiceSource; _tableauApiServiceDestination = tableauApiServiceDestination; _vizDatasourceService = vizDatasourceService; _logger = logger; _settingsMonitor.CurrentValue.DefaultOwnerUsername = _settingsMonitor.CurrentValue.DefaultOwnerUsername ?? ""; _tableauServiceFactorySource = new TableauServiceFactory(_tableauApiServiceSource, _logger); _tableauServiceFactoryDest = new TableauServiceFactory(_tableauApiServiceDestination, _logger); _tableauApiServiceSource.SignInAsync().Wait(); _tableauApiServiceDestination.SignInAsync().Wait(); // ensure case-insensitive connection credential lookup _settingsMonitor.CurrentValue.EmbeddedConnectionCredentials = new Dictionary <string, string>( _settingsMonitor.CurrentValue.EmbeddedConnectionCredentials, StringComparer.OrdinalIgnoreCase ); }
public VizDatasourceService( IOptionsMonitor <VizDatasourceSettings> settingsMonitor, ITableauApiServiceSource tableauApiServiceSource, ILogger logger ) { _settingsMonitor = settingsMonitor; _tableauApiServiceSource = tableauApiServiceSource; _logger = logger; if (String.IsNullOrWhiteSpace(_settingsMonitor.CurrentValue.ReportOutputPath)) { throw new ArgumentNullException("Viz datasource report path required"); } // populate the viz datasources - a list of datasources stored in Tableau used by the web UI // having a different format/schema from the datasource managed through the REST API LoadVizDatasourceJson(); }