private static Task <ExecutionResult> ExecuteRequestAsync(GraphQLRequest gqlRequest, IDictionary <string, object> userContext,
                                                           IGraphQLExecuter <TSchema> executer, IServiceProvider requestServices, CancellationToken token)
 => executer.ExecuteAsync(
     gqlRequest.OperationName,
     gqlRequest.Query,
     gqlRequest.Inputs,
     userContext,
     requestServices,
     token);
 public WebSocketConnectionFactory(ILogger <WebSocketConnectionFactory <TSchema> > logger,
                                   ILoggerFactory loggerFactory,
                                   IGraphQLExecuter <TSchema> executer,
                                   IEnumerable <IOperationMessageListener> messageListeners)
 {
     _logger           = logger;
     _loggerFactory    = loggerFactory;
     _executer         = executer;
     _messageListeners = messageListeners;
 }
Exemple #3
0
        public ExecutorBenchmarks()
        {
            _services = new ServiceCollection()
                        .AddSingleton <CharacterRepository>()
                        .AddSingleton <ReviewRepository>()
                        .BuildServiceProvider();

            _queryExecutor     = HotChocolate.Setup.Create();
            _gqlDotNetExecutor = GraphQLDotNet.Setup.Create();
        }
Exemple #4
0
        public async static Task <ExecutionResult> ExecuteAsync(this IGraphQLExecuter graphQLExecuter, HttpRequest request, ILogger logger)
        {
            string?operationName = null;
            string query;
            Inputs variables;

            if (HttpMethods.IsGet(request.Method) || (HttpMethods.IsPost(request.Method) && request.Query.ContainsKey(QUERY_KEY)))
            {
                (operationName, query, variables) = ExtractGraphQLAttributesFromQueryString(request);
            }
            else if (HttpMethods.IsPost(request.Method))
            {
                if (!MediaTypeHeaderValue.TryParse(request.ContentType, out var mediaTypeHeader))
                {
                    throw new GraphQLBadRequestException($"Could not parse 'Content-Type' header value '{request.ContentType}'.");
                }

                switch (mediaTypeHeader.MediaType)
                {
                case JSON_MEDIA_TYPE:
                    (operationName, query, variables) = await ExtractGraphQLAttributesFromJsonBodyAsync(request);

                    break;

                case GRAPHQL_MEDIA_TYPE:
                    query = await ExtractGraphQLQueryFromGraphQLBodyAsync(request.Body);

                    variables = new Inputs();
                    break;

                case FORM_URLENCODED_MEDIA_TYPE:
                    (operationName, query, variables) = await ExtractGraphQLAttributesFromFormCollectionAsync(request);

                    break;

                default:
                    throw new GraphQLBadRequestException($"Not supported 'Content-Type' header value '{request.ContentType}'.");
                }
            }
            else
            {
                throw new GraphQLBadRequestException($"Not supported 'HttpMethod' header value '{request.Method}'.");
            }

            logger.LogDebug("got graphql query: {operationName}, {query}, {variables}", operationName, query, variables);
            var stopwatch = new Stopwatch();

            stopwatch.Start();
            var executonResult = await graphQLExecuter.ExecuteAsync(operationName, query, variables, null, request.HttpContext.RequestAborted);

            stopwatch.Stop();
            logger.LogMetric($"graphql.{operationName}", stopwatch.ElapsedMilliseconds);
            return(executonResult);
        }
 public TenantWebSocketFactory(ILogger <TenantWebSocketFactory> logger,
                               ILoggerFactory loggerFactory,
                               IGraphQLExecuter <OspSchema> executer,
                               IEnumerable <IOperationMessageListener> messageListeners,
                               IOspService ospService,
                               IDocumentWriter documentWriter)
 {
     _logger           = logger;
     _loggerFactory    = loggerFactory;
     _executer         = executer;
     _messageListeners = messageListeners;
     _ospService       = ospService;
     _documentWriter   = documentWriter;
 }
Exemple #6
0
 public GraphQLWebSocketsMiddleware(
     RequestDelegate next,
     IGraphQLExecuterFactory executerFactory,
     IOptions <GraphQLWebSocketsOptions> options,
     IEnumerable <IOperationMessageListener> messageListeners,
     ILoggerFactory loggerFactory)
 {
     _next             = next;
     _messageListeners = messageListeners;
     _loggerFactory    = loggerFactory;
     _executer         = executerFactory.Create <TSchema>();
     _options          = options.Value;
     _logger           = loggerFactory.CreateLogger <GraphQLWebSocketsMiddleware <TSchema> >();
 }
        public async static Task <ExecutionResult> ExecuteAsync(this IGraphQLExecuter graphQLExecuter, HttpRequest request)
        {
            string  operationName = null;
            string  query         = null;
            JObject variables     = null;

            if (HttpMethods.IsGet(request.Method) || (HttpMethods.IsPost(request.Method) && request.Query.ContainsKey(QUERY_KEY)))
            {
                (operationName, query, variables) = ExtractGraphQLAttributesFromQueryString(request);
            }
            else if (HttpMethods.IsPost(request.Method))
            {
                if (!MediaTypeHeaderValue.TryParse(request.ContentType, out var mediaTypeHeader))
                {
                    throw new GraphQLBadRequestException($"Could not parse 'Content-Type' header value '{request.ContentType}'.");
                }

                switch (mediaTypeHeader.MediaType)
                {
                case JSON_MEDIA_TYPE:
                    (operationName, query, variables) = await ExtractGraphQLAttributesFromJsonBodyAsync(request);

                    break;

                case GRAPHQL_MEDIA_TYPE:
                    query = await ExtractGraphQLQueryFromGraphQLBodyAsync(request.Body);

                    break;

                case FORM_URLENCODED_MEDIA_TYPE:
                    (operationName, query, variables) = await ExtractGraphQLAttributesFromFormCollectionAsync(request);

                    break;

                default:
                    throw new GraphQLBadRequestException($"Not supported 'Content-Type' header value '{request.ContentType}'.");
                }
            }

            return(await graphQLExecuter.ExecuteAsync(operationName, query, variables?.ToInputs(), null, request.HttpContext.RequestAborted));
        }
 public ProtocolHandlerFacts()
 {
     _transport        = new TestableSubscriptionTransport();
     _transportReader  = _transport.Reader as TestableReader;
     _transportWriter  = _transport.Writer as TestableWriter;
     _documentExecuter = Substitute.For <IGraphQLExecuter>();
     _documentExecuter.ExecuteAsync(null, null, null, null, null).ReturnsForAnyArgs(
         new SubscriptionExecutionResult
     {
         Streams = new Dictionary <string, IObservable <ExecutionResult> >
         {
             { "1", Substitute.For <IObservable <ExecutionResult> >() }
         }
     });
     _subscriptionManager = new SubscriptionManager(_documentExecuter, new NullLoggerFactory());
     _sut    = new ProtocolMessageListener(new NullLogger <ProtocolMessageListener>());
     _server = new SubscriptionServer(
         _transport,
         _subscriptionManager,
         new[] { _sut },
         new NullLogger <SubscriptionServer>());
 }
Exemple #9
0
 public GraphQLFunction(IGraphQLExecuter <StarWarsSchema> graphQLExecuter)
 {
     _graphQLExecuter = graphQLExecuter ?? throw new ArgumentNullException(nameof(graphQLExecuter));
 }
 public ExecutorBenchmarks()
 {
     _queryExecutor     = HotChocolate.Setup.Create();
     _gqlDotNetExecutor = GraphQLDotNet.Setup.Create();
 }
 public SubscriptionManager(IGraphQLExecuter executer, ILoggerFactory loggerFactory)
 {
     _executer      = executer;
     _loggerFactory = loggerFactory;
     _logger        = loggerFactory.CreateLogger <SubscriptionManager>();
 }
Exemple #12
0
 public StarWars(IGraphQLExecuter <ISchema> graphQLExecuter)
 {
     this.graphQLExecuter = graphQLExecuter;
 }
Exemple #13
0
 public GraphQLFunction(IServiceProvider serviceProvider, IGraphQLExecuter <StarWarsSchema> graphQLExecuter)
 {
     _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
     _graphQLExecuter = graphQLExecuter ?? throw new ArgumentNullException(nameof(graphQLExecuter));
 }