public static async Task Run([TimerTrigger("0 */90 * * * *")] TimerInfo myTimer,
                                     [Table("movies", Connection = "AzureWebJobsStorage")] IAsyncCollector <MovieTableEntity> movieTable,
                                     [Table("movies", Connection = "AzureWebJobsStorage")] CloudTable movieCloudTable,
                                     ILogger log)
        {
            log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
            var response = await FinnkinoApi.GetAllCurrentMovies();

            var movies = await ParseXmlToMovies(response);

            foreach (var movie in movies)
            {
                var findOperation = TableOperation.Retrieve <MovieTableEntity>("MOVIE", movie.Id);
                var findResult    = await movieCloudTable.ExecuteAsync(findOperation);

                if (findResult.Result == null)
                {
                    await movieTable.AddAsync(movie.ToTableEntity());

                    continue;
                }

                var existingRow = (MovieTableEntity)findResult.Result;
                await UpdateProperties(movieCloudTable, existingRow, movie);
            }
        }
Exemple #2
0
        public async Task Run([TimerTrigger("0 */90 * * * *")] TimerInfo myTimer, ILogger log)
        {
            log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
            var response = await FinnkinoApi.GetAllCurrentMovies();

            var movies = await ParseXmlToMovies(response);

            var response2 = await FinnkinoApi.GetAllFutureMovies();

            var movies2 = await ParseXmlToMovies(response2);

            foreach (var movie in movies2)
            {
                movie.InSchedule = false;
            }
            movies.AddRange(movies2);

            await _movieRepository.AddOrUpdateMovies(movies);
        }
        public async Task Run([TimerTrigger("0 */90 * * * *")] TimerInfo myTimer, ILogger log)
        {
            log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
            var response = await FinnkinoApi.GetAllCurrentMovies();

            var movies = await ParseXmlToMovies(response);

            var response2 = await FinnkinoApi.GetAllFutureMovies();

            var movies2 = await ParseXmlToMovies(response2);

            foreach (var movie in movies2)
            {
                movie.InSchedule = false;
            }
            movies.AddRange(movies2);


            foreach (var movie in movies)
            {
                try
                {
                    var existingMovie = _cosmosMovieService.GetItemAsync(movie.MovieId);

                    if (existingMovie == null)
                    {
                        await _cosmosMovieService.AddItemAsync(movie);

                        continue;
                    }

                    await _cosmosMovieService.UpdateItemAsync(movie.MovieId, movie);
                }
                catch (CosmosException ex) when(ex.StatusCode == HttpStatusCode.TooManyRequests) //429
                {
                    _logger.LogError($"Cant create document. Request was throttled. Exception thrown: {ex.Message}");
                }
                catch (Exception ex)
                {
                    _logger.LogError($"Could not update movies. Exception thrown: {ex.Message}");
                }
            }
        }