public async Task Init()
 {
     try {
         string json;
         using (var sr = new StreamReader("Resources/config.json"))
             json = await sr.ReadToEndAsync();
         var cfg = JsonConvert.DeserializeObject <BotConfig>(json);
         this.omdb = new OMDbService(cfg.OMDbKey);
     } catch {
         Assert.Warn("Config file not found or OMDb key isn't valid (service disabled).");
         this.omdb = new OMDbService(null);
     }
 }
示例#2
0
        /// <summary>
        /// Method for recording movies from OMDb API in the DB async.
        /// </summary>
        /// <param name="movieIds">Movie Ids.</param>
        public async Task UploadAsync(string[] movieIds)
        {
            OMDbService omdbService = new OMDbService(configuration.GetValue <string>("OMDbApiKey"));

            using (var transaction = await context.Database.BeginTransactionAsync())
            {
                foreach (var movieId in movieIds)
                {
                    if (!context.Movies.Any(m => m.ImdbId == movieId))
                    {
                        Movie movie = await omdbService.GetMovieFromJsonAsync(movieId);

                        await context.Movies.AddAsync(movie);

                        await context.SaveChangesAsync();
                    }
                    else
                    {
                        transaction.Rollback();
                    }

                    foreach (var actorName in await omdbService.GetMovieActorsNamesFromJsonAsync(movieId))
                    {
                        var actor = context.Actors.FirstOrDefault(a => a.Name == actorName);

                        if (actor == null)
                        {
                            actor = new Actor
                            {
                                Name = actorName.TrimStart(' ')
                            };

                            await context.Actors.AddAsync(actor);
                        }

                        var movieActor = new MovieActor
                        {
                            ActorId = actor.Id,
                            MovieId = context.Movies.Last().Id
                        };

                        await context.MovieActors.AddAsync(movieActor);
                    }

                    await context.SaveChangesAsync();

                    transaction.Commit();
                }
            }
        }