Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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));
            }
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 public async Task <IEnumerable <MovieShow> > Handle(GetShowsQuery request, CancellationToken cancellationToken)
 {
     return(await _repository.GetAllAsync());
 }