Ejemplo n.º 1
0
        public static void AddGraphQl(this IApplicationBuilder app)
        {
            var openIdSettings = IocApi.Instance.Resolve <OpenIdSettings>();
            var uriCombine     = new Uri(openIdSettings.HostUrl.UriCombine("/graphql"));

            var settings = new GraphQLHttpOptions
            {
                Path             = uriCombine.PathAndQuery,
                ExposeExceptions = true,
                BuildUserContext = ctx =>
                {
                    var userContext = new GraphQLUserContext
                    {
                        User = ctx.User
                    };



                    return(Task.FromResult(userContext));
                }
            };
            var rules = app.ApplicationServices.GetServices <IValidationRule>();

            rules.ForEach(x => settings.ValidationRules.Add(x));

            app.UseGraphQLHttp <ISchema>(settings);

            app.UseGraphQLPlayground(new GraphQLPlaygroundOptions()
            {
                GraphQLEndPoint = uriCombine.PathAndQuery
            });
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Specifies the GraphQL HTTP request options.
 /// </summary>
 /// <param name="builder">
 /// The <see cref="GraphQLEndpointConventionBuilder"/>.
 /// </param>
 /// <param name="httpOptions">
 /// The GraphQL HTTP request options.
 /// </param>
 /// <returns>
 /// Returns the <see cref="GraphQLEndpointConventionBuilder"/> so that
 /// configuration can be chained.
 /// </returns>
 public static GraphQLHttpEndpointConventionBuilder WithOptions(
     this GraphQLHttpEndpointConventionBuilder builder,
     GraphQLHttpOptions httpOptions) =>
 builder.WithMetadata(new GraphQLServerOptions
 {
     AllowedGetOperations    = httpOptions.AllowedGetOperations,
     EnableGetRequests       = httpOptions.EnableGetRequests,
     EnableMultipartRequests = httpOptions.EnableMultipartRequests
 });
Ejemplo n.º 3
0
        private GraphQLHttpOptions GetGraphQLHttpOptions(IApplicationBuilder application)
        {
            var options = new GraphQLHttpOptions()
            {
                // Show stack traces in exceptions. Don't turn this on in production.
                ExposeExceptions = this.hostingEnvironment.IsDevelopment(),
            };

            // Add your own validation rules e.g. for authentication or custom field validation.
            var validationRules = application.ApplicationServices.GetServices <IValidationRule>();

            if (validationRules != null)
            {
                foreach (var validationRule in validationRules)
                {
                    options.ValidationRules.Add(validationRule);
                }
            }

            return(options);
        }
Ejemplo n.º 4
0
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            var validationRules = app.ApplicationServices.GetServices <IValidationRule>();

            var options = new GraphQLHttpOptions();

            validationRules.Concat(DocumentValidator.CoreRules()).Apply(options.ValidationRules.Add);
            options.BuildUserContext = httpContext => new GraphQLUserContext {
                User = httpContext.User
            };

            app.UseGraphQLHttp <ISchema>(options);
            app.UseGraphiQLServer(new GraphiQLOptions());

            app.UseMvc();
        }