public async Task <JObject> GetShows(long cinemaId, DateTime?date, GetShowsDynamicQuery dynamicQuery, CancellationToken cancellationToken) { if (cinemaId <= 0) { throw new ArgumentOutOfRangeException(nameof(cinemaId), $"{nameof(cinemaId)} needs to be bigger than 0"); } var query = new GetShowsQuery(cinemaId, date, dynamicQuery); var request = BuildRestRequest(query.BuildRequest()); var client = CreateClient(); var response = await client.ExecutePostTaskAsync <GraphQLResponse>(request, cancellationToken).ConfigureAwait(false); return(response?.Data?.Data); }
public async Task IntegratieTest() { var client = new HttpClient(); var storage = new Storage(); var api = new TvMazeApi(client, storage); await api.StoreShows(); var query = new GetShowsQuery() { Page = 1 }; var shows = await storage.GetShows(query); Assert.NotNull(shows); Assert.True(shows.Shows.Length == 10); }
public async Task <IActionResult> Shows(GetShowsQuery query) { // Om het even simpel te houden in de frontend API hebben we een query met side effects gecreeerd in het kader van de 3 urige opdracht. try { var result = await QueryHandler.Handle(query); return(Json(result)); } catch (NoShowsException) { await CommandHandler.Handle(new StoreShowsCommand()); var result = await QueryHandler.Handle(query); return(Json(result)); } }
public async Task <IActionResult> Get( [FromQuery(Name = "skip")] int skip = 0, [FromQuery(Name = "take")] int take = 10) { if (take > 500) { return(BadRequest("Api can return 500 or less tv shows per call.")); } var query = new GetShowsQuery { Skip = skip, Take = take }; var result = await _mediator.Send(query); return(Ok(result)); }
public async Task <QueryResult> GetShows(GetShowsQuery query) { var result = new QueryResult(); // om het simpel te houden in het kader van de 3 urige opdracht pagesize hardcoded. normaliter komt dit uit de application layer var pageSize = 10; string json; using (var sourceReader = File.OpenText(@"c:\shows.json")) { json = await sourceReader.ReadToEndAsync(); } var shows = JsonConvert.DeserializeObject <List <Show> >(json); result.Shows = shows.Skip(query.Page * pageSize).Take(pageSize).ToArray(); result.TotalPages = shows.Count / pageSize; result.Page = query.Page; return(result); }
public async Task <IEnumerable <MovieShow> > Handle(GetShowsQuery request, CancellationToken cancellationToken) { return(await _repository.GetAllAsync()); }