Пример #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>());
        }
        public static IQueryExecutionBuilder UseNoCachedQueryError(
            this IQueryExecutionBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.Use <NoCachedQueryErrorMiddleware>());
        }
        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>());
 }
 public static IQueryExecutionBuilder UseDiagnostics(
     this IQueryExecutionBuilder builder)
 {
     return(builder.Use <DiagnosticMiddleware>());
 }
Пример #23
0
 public static IQueryExecutionBuilder UseExceptionHandling(
     this IQueryExecutionBuilder builder)
 {
     return(builder.Use <ExceptionMiddleware>());
 }