コード例 #1
0
        public static IQueryExecutionBuilder UseInstrumentation(
            this IQueryExecutionBuilder builder,
            IInstrumentationOptionsAccessor options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            builder.Services
            .AddSingleton(options)
            .AddScoped <DiagnosticListenerInitializer>();

            if (options.EnableTracing)
            {
                builder.Services
                .AddScoped <
                    IApolloTracingResultBuilder,
                    ApolloTracingResultBuilder>()
                .AddScoped <
                    DiagnosticListener,
                    ApolloTracingDiagnosticListener>();
            }

            return(builder.Use <InstrumentationMiddleware>());
        }
コード例 #2
0
        public static IQueryExecutionBuilder UseInstrumentation(
            this IQueryExecutionBuilder builder,
            TracingPreference tracingPreference)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            var listener = new DiagnosticListener(DiagnosticNames.Listener);

            builder
            .RemoveService <DiagnosticListener>()
            .RemoveService <DiagnosticSource>();
            builder.Services
            .AddSingleton(listener)
            .AddSingleton <DiagnosticSource>(listener)
            .AddSingleton(sp => new QueryExecutionDiagnostics(
                              sp.GetRequiredService <DiagnosticListener>(),
                              sp.GetServices <IDiagnosticObserver>()));

            if (tracingPreference != TracingPreference.Never)
            {
                builder
                .AddDiagnosticObserver(new ApolloTracingDiagnosticObserver(
                                           tracingPreference));
            }

            return(builder.Use <InstrumentationMiddleware>());
        }
コード例 #3
0
        public static IQueryExecutionBuilder UsePropagateVariables(
            this IQueryExecutionBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.Use <CopyVariablesToResolverContextMiddleware>());
        }
コード例 #4
0
        public static IQueryExecutionBuilder UseNoCachedQueryError(
            this IQueryExecutionBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.Use <NoCachedQueryErrorMiddleware>());
        }
コード例 #5
0
        public static IQueryExecutionBuilder UseWritePersistedQuery(
            this IQueryExecutionBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.Use <WritePersistedQueryMiddleware>());
        }
コード例 #6
0
        public static IQueryExecutionBuilder UseValidation(
            this IQueryExecutionBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.Use <ValidateQueryMiddleware>());
        }
コード例 #7
0
        public static IQueryExecutionBuilder UseMaxComplexity(
            this IQueryExecutionBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.Use <MaxComplexityMiddleware>());
        }
コード例 #8
0
        public static IQueryExecutionBuilder UseOperationResolver(
            this IQueryExecutionBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.Use <ResolveOperationMiddleware>());
        }
コード例 #9
0
        public static IQueryExecutionBuilder UseRequestTimeout(
            this IQueryExecutionBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.Use <RequestTimeoutMiddleware>());
        }
コード例 #10
0
        public static IQueryExecutionBuilder UseExceptionHandling(
            this IQueryExecutionBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.Use <ExceptionMiddleware>());
        }
コード例 #11
0
        public static IQueryExecutionBuilder Use <TMiddleware>(
            this IQueryExecutionBuilder builder)
            where TMiddleware : class
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.Use(ClassMiddlewareFactory.Create <TMiddleware>()));
        }
コード例 #12
0
        public static IQueryExecutionBuilder Use <TMiddleware>(
            this IQueryExecutionBuilder builder,
            Func <IServiceProvider, QueryDelegate, TMiddleware> factory)
            where TMiddleware : class
        {
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            return(builder.Use(ClassMiddlewareFactory.Create(factory)));
        }
コード例 #13
0
        public static IQueryExecutionBuilder UseRequestTimeout(
            this IQueryExecutionBuilder builder,
            IRequestTimeoutOptionsAccessor options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            builder.Services.AddSingleton(options);

            return(builder.Use <RequestTimeoutMiddleware>());
        }
コード例 #14
0
        public static IQueryExecutionBuilder UseRemoteQueryExecutor(
            this IQueryExecutionBuilder builder,
            string schemaName)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (string.IsNullOrEmpty(schemaName))
            {
                throw new ArgumentException(
                          "The schema name mustn't be null or empty.",
                          nameof(schemaName));
            }

            return(builder.Use((services, next) =>
                               new RemoteQueryMiddleware(next, schemaName)));
        }
コード例 #15
0
 public static IQueryExecutionBuilder UseCoerceVariables(
     this IQueryExecutionBuilder builder)
 {
     return(builder.Use <CoerceVariablesMiddleware>());
 }
コード例 #16
0
 public static IQueryExecutionBuilder UseOperationResolver(
     this IQueryExecutionBuilder builder)
 {
     return(builder.Use <ResolveOperationMiddleware>());
 }
コード例 #17
0
 public static IQueryExecutionBuilder UseOperationExecutor(
     this IQueryExecutionBuilder builder)
 {
     return(builder.Use <ExecuteOperationMiddleware>());
 }
コード例 #18
0
 public static IQueryExecutionBuilder Use <TMiddleware>(
     this IQueryExecutionBuilder builder)
     where TMiddleware : class
 {
     return(builder.Use(ClassMiddlewareFactory.Create <TMiddleware>()));
 }
コード例 #19
0
 public static IQueryExecutionBuilder UseMaxComplexity(
     this IQueryExecutionBuilder builder)
 {
     return(builder.Use <MaxComplexityMiddleware>());
 }
コード例 #20
0
 public static IQueryExecutionBuilder UseValidation(
     this IQueryExecutionBuilder builder)
 {
     return(builder.Use <ValidateQueryMiddleware>());
 }
コード例 #21
0
 public static IQueryExecutionBuilder UseQueryParser(
     this IQueryExecutionBuilder builder)
 {
     return(builder.Use <ParseQueryMiddleware>());
 }
コード例 #22
0
 public static IQueryExecutionBuilder UseDiagnostics(
     this IQueryExecutionBuilder builder)
 {
     return(builder.Use <DiagnosticMiddleware>());
 }
コード例 #23
0
 public static IQueryExecutionBuilder UseExceptionHandling(
     this IQueryExecutionBuilder builder)
 {
     return(builder.Use <ExceptionMiddleware>());
 }