Esempio n. 1
0
        private Task <(bool HasError, object Response)> ExecuteAsync(GraphQLQuery query, string permissionId)
        {
            var permission = Permissions.ForApp(permissionId, app.Name, schemaId.Name).Id;

            var withPermission = new Context(Mocks.FrontendUser(permission: permission), app);

            return(sut.QueryAsync(withPermission, query));
        }
Esempio n. 2
0
        private async Task <(bool HasError, object Response)> QueryInternalAsync(GraphQLModel model, GraphQLExecutionContext ctx, GraphQLQuery query)
        {
            if (string.IsNullOrWhiteSpace(query.Query))
            {
                return(false, new { data = new object() });
            }

            var result = await model.ExecuteAsync(ctx, query);

            if (result.Errors?.Any() == true)
            {
                return(false, new { data = result.Data, errors = result.Errors });
            }
            else
            {
                return(false, new { data = result.Data });
            }
        }
Esempio n. 3
0
        public async Task <(bool HasError, object Response)> QueryAsync(Context context, GraphQLQuery query)
        {
            Guard.NotNull(context, nameof(context));
            Guard.NotNull(query, nameof(query));

            var model = await GetModelAsync(context.App);

            var ctx = new GraphQLExecutionContext(context, resolver);

            var result = await QueryInternalAsync(model, ctx, query);

            return(result);
        }
Esempio n. 4
0
        public async Task <(object Data, object[]? Errors)> ExecuteAsync(GraphQLExecutionContext context, GraphQLQuery query)
        {
            Guard.NotNull(context, nameof(context));

            var result = await Executor.ExecuteAsync(execution =>
            {
                context.Setup(execution);

                execution.Schema = graphQLSchema;
                execution.Inputs = query.Inputs;
                execution.Query  = query.Query;
            });

            if (result.Errors != null && result.Errors.Any())
            {
                log.LogWarning(w => w
                               .WriteProperty("action", "GraphQL")
                               .WriteProperty("status", "Failed")
                               .WriteArray("errors", a =>
                {
                    foreach (var error in result.Errors)
                    {
                        a.WriteObject(error, (error, e) => e.WriteException(error));
                    }
                }));
            }

            var errors = result.Errors?.Select(x => (object)new { x.Message, x.Locations }).ToArray();

            return(result.Data, errors);
        }
Esempio n. 5
0
        public async Task <(bool HasError, object Response)> QueryAsync(Context context, GraphQLQuery query)
        {
            Guard.NotNull(context, nameof(context));
            Guard.NotNull(query, nameof(query));

            var model = await GetModelAsync(context.App);

            var executionContext =
                serviceProvider.GetRequiredService <GraphQLExecutionContext>()
                .WithContext(context);

            var result = await QueryInternalAsync(model, executionContext, query);

            return(result);
        }
Esempio n. 6
0
        public async Task <(object Data, object[]? Errors)> ExecuteAsync(GraphQLExecutionContext context, GraphQLQuery query)
        {
            Guard.NotNull(context, nameof(context));

            var result = await new DocumentExecuter().ExecuteAsync(execution =>
            {
                context.Setup(execution);

                execution.Schema = graphQLSchema;
                execution.Inputs = query.Variables?.ToInputs();
                execution.Query  = query.Query;
            }).ConfigureAwait(false);

            return(result.Data, result.Errors?.Select(x => (object)new { x.Message, x.Locations }).ToArray());
        }
Esempio n. 7
0
        public async Task <(object Data, object[] Errors)> ExecuteAsync(GraphQLExecutionContext context, GraphQLQuery query)
        {
            Guard.NotNull(context, nameof(context));

            var inputs = query.Variables?.ToInputs();

            var result = await new DocumentExecuter().ExecuteAsync(options =>
            {
                options.OperationName = query.OperationName;
                options.UserContext   = context;
                options.Schema        = graphQLSchema;
                options.Inputs        = inputs;
                options.Query         = query.Query;
            }).ConfigureAwait(false);

            return(result.Data, result.Errors?.Select(x => (object)new { x.Message, x.Locations }).ToArray());
        }
Esempio n. 8
0
        public async Task <(object Data, object[] Errors)> QueryAsync(IAppEntity app, ClaimsPrincipal user, GraphQLQuery query)
        {
            Guard.NotNull(app, nameof(app));
            Guard.NotNull(query, nameof(query));

            if (string.IsNullOrWhiteSpace(query.Query))
            {
                return(new object(), new object[0]);
            }

            var modelContext = await GetModelAsync(app);

            var ctx = new GraphQLExecutionContext(app, assetRepository, commandBus, contentQuery, user, urlGenerator);

            return(await modelContext.ExecuteAsync(ctx, query));
        }
Esempio n. 9
0
        public async Task <(object Data, object[] Errors)> QueryAsync(QueryContext context, GraphQLQuery query)
        {
            Guard.NotNull(context, nameof(context));
            Guard.NotNull(query, nameof(query));

            if (string.IsNullOrWhiteSpace(query.Query))
            {
                return(new object(), new object[0]);
            }

            var modelContext = await GetModelAsync(context.App);

            var ctx = new GraphQLExecutionContext(context, assetRepository, contentQuery, urlGenerator);

            return(await modelContext.ExecuteAsync(ctx, query));
        }