Esempio n. 1
0
        public async Task <IActionResult> Explore(
            ExploreParams data,
            [FromServices] ExplorationLauncher launcher,
            [FromServices] IAircloakAuthenticationProvider authProvider,
            [FromServices] ContextBuilder contextBuilder,
            [FromServices] AircloakConnectionBuilder connectionBuilder)
        {
            // Register the authentication token for this scope.
            if (authProvider is ExplorerApiAuthProvider auth)
            {
                auth.RegisterApiKey(data.ApiKey);
            }

            var apiUri  = new Uri(data.ApiUrl);
            var cts     = new CancellationTokenSource();
            var conn    = connectionBuilder.Build(apiUri, data.DataSource, cts.Token);
            var ctxList = await contextBuilder.Build(apiUri, data.DataSource, data.Table, data.Columns);

            var explorationSettings = ctxList.Select(ctx => (ComponentComposition.ColumnConfiguration(ctx.ColumnType), ctx));
            var exploration         = launcher.LaunchExploration(data.DataSource, data.Table, conn, explorationSettings);

            // Register the exploration for future reference.
            var id = explorationRegistry.Register(exploration, cts);

            return(Ok(new ExploreResult(id, ExplorationStatus.New, data.DataSource, data.Table, versionInfo)));
        }
Esempio n. 2
0
        public Guid Register(ExploreParams requestData, Exploration exploration)
        {
            var id = Guid.NewGuid();

            registrations[id] = new Registration(requestData, exploration);

            return(id);
        }
Esempio n. 3
0
        public IActionResult Explore(
            [FromServices] IContainer rootContainer,
            [FromServices] ExplorationScopeBuilder scopeBuilder,
            [FromServices] JsonApiContextBuilder contextBuilder,
            [FromServices] IAircloakAuthenticationProvider authProvider,
            ExploreParams data)
        {
            // Register the authentication token for this scope.
            if (authProvider is ExplorerApiAuthProvider auth)
            {
                auth.RegisterApiKey(data.ApiKey);
            }

            // Launch and register the exploration.
            var exploration = new Exploration(rootContainer, scopeBuilder);

            exploration.Explore(contextBuilder, data);

            var id = explorationRegistry.Register(data, exploration);

            return(Ok(new ExploreResult(id, ExplorationStatus.New, data)));
        }
Esempio n. 4
0
 public Registration(ExploreParams requestData, Exploration exploration)
 {
     RequestData = requestData;
     Exploration = exploration;
 }