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); } }
/// <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(); } } }