Example #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)));
        }
Example #2
0
        /// <summary>
        /// Injects and configures the <see cref="JsonApiClient"/> with a given authentication
        /// provider instance.
        /// </summary>
        /// <param name="services">The IServiceCollection.</param>
        /// <param name="authProvider">The authentication provider instance.</param>
        /// <returns>The <see cref="IHttpClientBuilder"/> with the attached services.</returns>
        public static IHttpClientBuilder AddAircloakJsonApiServices(
            this IServiceCollection services,
            IAircloakAuthenticationProvider authProvider)
        {
            var builder = services
                          .AddHttpClient(JsonApiClient.HttpClientName);

            services
            .AddScoped(_ => authProvider)
            .AddScoped <JsonApiClient>();

            return(builder);
        }
Example #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)));
        }
Example #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="JsonApiClient" /> class.
 /// </summary>
 /// <param name="httpClientFactory">A HttpClient factory providing a named client <see ref="HttpClientName" />.
 /// </param>
 /// <param name="authProvider">An authentication token source.</param>
 public JsonApiClient(IHttpClientFactory httpClientFactory, IAircloakAuthenticationProvider authProvider)
 {
     httpClient        = httpClientFactory.CreateClient(HttpClientName);
     this.authProvider = authProvider;
 }