Beispiel #1
0
        public object Execute(Expression expression)
        {
            var variablesResolver = new VariablesResolver();
            var query             = queryBuilder.BuildQuery(expression, variablesResolver, out var entryPoint);
            var request           = new GraphQLRequest
            {
                Query     = query,
                Variables = variablesResolver.GetAllVariables().ToDictionary(_ => _.name, _ => _.value)
            };

            var result = Task.Run(() => client.SendQueryAsync <JToken>(request, CancellationToken.None))
                         .GetAwaiter()
                         .GetResult();

            expression = RewriteExpression(expression, result.Data[entryPoint]);

            return(expression switch
            {
                MethodCallExpression method => Expression.Lambda <Func <object> >(method).Compile()(),
                ConstantExpression constant => constant.Value,
                _ => throw new NotImplementedException()
            });