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; }
public ExecutorBenchmarks() { _services = new ServiceCollection() .AddSingleton <CharacterRepository>() .AddSingleton <ReviewRepository>() .BuildServiceProvider(); _queryExecutor = HotChocolate.Setup.Create(); _gqlDotNetExecutor = GraphQLDotNet.Setup.Create(); }
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; }
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>()); }
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>(); }
public StarWars(IGraphQLExecuter <ISchema> graphQLExecuter) { this.graphQLExecuter = graphQLExecuter; }
public GraphQLFunction(IServiceProvider serviceProvider, IGraphQLExecuter <StarWarsSchema> graphQLExecuter) { _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider)); _graphQLExecuter = graphQLExecuter ?? throw new ArgumentNullException(nameof(graphQLExecuter)); }