Пример #1
0
        public static IServiceCollection AddGraphQLServer(this IServiceCollection services, Action <GraphServerBuilder> configure = null)
        {
            services.AddHttpContextAccessor();
            services.TryAddSingleton <ISchemaFactory, SchemaFactory>();
            services.TryAddSingleton <IAttributeAccessor, AttributeAccessor>();
            services.TryAddSingleton <IGraphTypeProvider, GraphTypeProvider>();
            services.TryAddSingleton <IGraphContextFactory, DefaultGraphContextFactory>();
            services.TryAddSingleton <IDocumentBuilder, GraphQLDocumentBuilder>();
            services.TryAddSingleton <IGraphSchemaProvider, GraphSchemaProvider>();
            services.TryAddSingleton <ISelectionSetProvider, SelectionSetProvider>();
            services.TryAddSingleton <IGraphExecutor, DefaultGraphExecutor>();
            services.TryAddSingleton <IQueryResultTypeGenerator, QueryResultTypeGenerator>();
            services.TryAddSingleton <IGraphSchemaFormatter, GraphSchemaFormatter>();
            services.TryAddSingleton <IJsonSerializerProvider, JsonSerializerProvider>();
            services.TryAddSingleton <IGraphServiceDiscoverer, GraphServiceDiscoverer>();
            services.TryAddSingleton <IArgumentBinderProvider, ArgumentBinderProvider>();
            services.TryAddSingleton <IGraphSchemaConverter, GraphSchemaConverter>();

            services.AddSingleton <IArgumentBinder, GraphArgumentBinder>();
            services.AddSingleton <IArgumentBinder, HttpContextBinder>();
            services.AddSingleton <IArgumentBinder, GraphContextBinder>();
            services.AddSingleton <IArgumentBinder, ServiceProviderBinder>();
            services.AddSingleton <IArgumentBinder, CancellationTokenBinder>();


            if (configure != null)
            {
                var builder = new GraphServerBuilder(services);
                configure(builder);
            }

            Mapper.Initialize(cfg => cfg.CreateMissingTypeMaps = true);
            return(services);
        }
 public static GraphServerBuilder UseCamelCase(this GraphServerBuilder builder)
 {
     Guard.ArgumentNotNull(builder, nameof(builder));
     return(builder.ConfigureGraphQL(options => options.FieldNameConverter = FieldNameConverter.CamelCase));
 }
 public static GraphServerBuilder UsePathBase(this GraphServerBuilder builder, PathString pathBase)
 {
     Guard.ArgumentNotNull(builder, nameof(builder));
     return(builder.ConfigureServer(options => options.PathBase = pathBase));
 }