public async Task Execute(CancellationToken cancellationToken) { if (_isExecuted) { throw new GraphQLBatchAlreadyExecutedException(); } _isExecuted = true; // Update fields so they don't conflict UpdateAlias(); // Update arguments so they don't conflict UpdateArguments(); // Get all fields var fields = _fields.SelectMany(e => e.Value).ToList(); // Generate query _executedQuery = _queryGenerator.GenerateQuery(_graphQLOperationType, fields, _arguments.SelectMany(e => e.Value).ToArray()); // Execute query var serverResult = await _executor.ExecuteQuery(query : _executedQuery, url : _url, method : _httpMethod, authorizationToken : _authorizationToken, authorizationMethod : _authorizationMethod, headers : _headers, cancellationToken : cancellationToken).ConfigureAwait(false); // Deserilize result _result = _graphQLDeserialization.DeserializeResult <JObject>(serverResult.Response, fields); // Set headers _result.Headers = serverResult.Headers; }
private void OperationSource_RecievePayload(object sender, PayloadEventArgs e) { if (_isStopped) { return; } // Get GraphQLResult var result = e.Payload.ToObject <GraphQLDataResult <JObject> >(); // Add final result var finalResult = new GraphQLDataResult <T>() { Errors = result.Errors }; // Deserilize data if (result.Data != null) { var data = deserialization.DeserializeResult <T>(result.Data, selectionSet); finalResult.Data = data; } // Send event if (result.ContainsErrors) { ErrorRecieved?.Invoke(this, new GraphQLDataReceivedEventArg <T>(finalResult)); } else { DataRecieved?.Invoke(this, new GraphQLDataReceivedEventArg <T>(finalResult)); } }
public void GraphQLDataResult_Should_Return_False_On_Data_And_Errors() { // Arrange var result = new GraphQLDataResult <string>(); // Act / Assert Assert.False(result.ContainsData); Assert.False(result.ContainsErrors); }
private void LogMessage(GraphQLDataResult <JObject> result) { try { Logger?.LogError(result.Data.ToString()); } catch { // Ignored } }
public void GraphQLDataResult_Should_Return_True_On_Data_When_Contains_Data() { // Arrange var result = new GraphQLDataResult <string> { Data = "" }; // Act / Assert Assert.True(result.ContainsData); Assert.False(result.ContainsErrors); }
public async Task <IEnumerable <T> > ExecuteCollectionAsync <T>(Expression query) { // Get QueryModel QueryModel queryModel = GetParsedQuery(query); GraphQLQueryVisitor visitor = new GraphQLQueryVisitor(); visitor.VisitQueryModel(queryModel); GraphQLDataResult <IDictionary <string, IEnumerable <T> > > result = await _queryExecutor.ExecuteQuery <IDictionary <string, IEnumerable <T> > >( JsonConvert.SerializeObject(new { query = _queryBuilder.GetQuery(visitor.GetGraphQLQueryOptions()) })); return(result?.Data?.Values?.SelectMany(enumerable => enumerable) ?? Enumerable.Empty <T>()); }
public void GraphQLDataResult_Should_Return_True_On_Errors_When_Contains_Errors() { // Arrange var result = new GraphQLDataResult <string> { Errors = new List <GraphQLDataError> { new GraphQLDataError() } }; // Act / Assert Assert.True(result.ContainsErrors); Assert.False(result.ContainsData); }
private void OperationSource_RecievePayload(object sender, PayloadEventArgs e) { if (_isStopped) { return; } // Get GraphQLResult var result = e.Payload.ToObject <GraphQLDataResult <JObject> >(); // Add final result var finalResult = new GraphQLDataResult <T>() { Errors = result.Errors }; // Deserilize data if (result.Data != null) { try { var data = deserialization.DeserializeResult <T>(result.Data, selectionSet); finalResult.Data = data; } catch (Exception ex) { Logger?.LogError(new EventId(2), ex, "Exception deserilizing message"); LogMessage(result); // Ignored } } // Send event if (result.ContainsErrors) { ErrorRecieved?.Invoke(this, new GraphQLDataReceivedEventArg <T>(finalResult)); } else { DataRecieved?.Invoke(this, new GraphQLDataReceivedEventArg <T>(finalResult)); } }
public async Task Execute() { if (_isExecuted) { throw new GraphQLBatchAlreadyExecutedException(); } _isExecuted = true; // Update fields so they don't conflict UpdateAlias(); // Update arguments so they don't conflict UpdateArguments(); // Generate query _executedQuery = _queryGenerator.GetQuery(_fields.SelectMany(e => e.Value), _arguments.SelectMany(e => e.Value).ToArray()); // Execute query _result = await _executor.ExecuteQuery <JObject>(_executedQuery, _url, _httpMethod, _authorizationToken, _authorizationMethod).ConfigureAwait(false); }
/// <summary> /// Initilizes a new instance of the <see cref="GraphQLDataReceivedEventArg"/> /// </summary> /// <param name="data">The received data</param> public GraphQLDataReceivedEventArg(GraphQLDataResult <T> data) { ReceivedData = data; }