/// <inheritdoc /> public override async Task <JObject> GetData(List <ApiRequest> requests, RequestContext context) { var endpoint = this.GetEndpoint(); if (endpoint == null) { return(null); } var mutations = requests.OfType <MutationApiRequest>().ToList(); if (mutations.Count > 0) { var result = new JObject(); foreach (var mutation in mutations) { mutation.Context = context; var midResult = await endpoint.Ask <SurrogatableJObject>(mutation, this.timeout); result.Merge((JObject)midResult); } return(result); } var query = new QueryApiRequest { Context = context, Fields = requests }; return(await endpoint.Ask <SurrogatableJObject>(query, this.timeout)); }
/// <summary> /// Handles query requests /// </summary> /// <param name="request">The query request</param> private void HandleQuery(QueryApiRequest request) { var system = Context.System; this.apiProvider.ResolveQuery( request.Fields, request.Context, exception => system.Log.Error(exception, "{Type}: query resolve exception", this.GetType().Name)) .PipeTo( this.Sender, this.Self, json => (SurrogatableJObject)json, e => this.HandleResolveException(e, system)); }
public async Task QueryHandleTest() { this.ExpectNoMsg(); var actor = this.ActorOfAsTestActorRef <ApiHandlerActor>(Props.Create(() => new ApiHandlerActor(new TestProvider(null)))); var context = new RequestContext(); var queryFields = new List <ApiRequest> { new ApiRequest { FieldName = "asyncScalarField" } }; var query = new QueryApiRequest { Context = context, Fields = queryFields }; var result = (JObject)await actor.Ask <SurrogatableJObject>(query, TimeSpan.FromSeconds(1)); Assert.NotNull(result); Assert.NotNull(result.Property("asyncScalarField")); Assert.Equal("AsyncScalarField", result.Property("asyncScalarField").ToObject <string>()); }