Exemplo n.º 1
0
 public MoviesController(IMovieService service, IMapper mapper, ITmdbService tmdbService)
 {
     this.service     = service ?? throw new ArgumentNullException(nameof(service));
     this.mapper      = mapper ?? throw new ArgumentNullException(nameof(mapper));
     this.tmdbService = tmdbService ?? throw new ArgumentNullException(nameof(tmdbService));
 }
Exemplo n.º 2
0
        /// <summary>
        /// Initialize a new instance of MovieService class
        /// </summary>
        public MovieService(ITmdbService tmdbService)
        {
            _moviesToTranslateObservable = new Subject <IMovie>();
            _tmdbService = tmdbService;

            try
            {
                _moviesToTranslateObservable.Drain(s => Observable.Return(s).Delay(TimeSpan.FromMilliseconds(250)))
                .Subscribe(async movieToTranslate =>
                {
                    if (movieToTranslate == null)
                    {
                        return;
                    }

                    var timeoutPolicy =
                        Policy.TimeoutAsync(Utils.Constants.DefaultRequestTimeoutInSecond,
                                            TimeoutStrategy.Pessimistic);
                    try
                    {
                        await timeoutPolicy.ExecuteAsync(async() =>
                        {
                            try
                            {
                                var movie = await(await _tmdbService.GetClient).GetMovieAsync(movieToTranslate.ImdbId,
                                                                                              MovieMethods.Credits);
                                if (movieToTranslate is MovieJson refMovie)
                                {
                                    refMovie.TranslationLanguage = (await _tmdbService.GetClient).DefaultLanguage;
                                    refMovie.Title           = movie?.Title;
                                    refMovie.Genres          = movie?.Genres?.Select(a => a.Name).ToList();
                                    refMovie.DescriptionFull = movie?.Overview;
                                }
                                else if (movieToTranslate is MovieLightJson refMovieLight)
                                {
                                    refMovieLight.TranslationLanguage = (await _tmdbService.GetClient).DefaultLanguage;
                                    refMovieLight.Title  = movie?.Title;
                                    refMovieLight.Genres = movie?.Genres != null
                                            ? string.Join(", ", movie.Genres?.Select(a => a.Name))
                                            : string.Empty;
                                }
                            }
                            catch (Exception exception) when(exception is TaskCanceledException)
                            {
                                Logger.Debug(
                                    "TranslateMovieAsync cancelled.");
                            }
                            catch (Exception exception)
                            {
                                Logger.Error(
                                    $"TranslateMovieAsync: {exception.Message}");
                            }
                        });
                    }
                    catch (Exception ex)
                    {
                        Logger.Warn(
                            $"Movie {movieToTranslate.ImdbId} has not been translated in {Utils.Constants.DefaultRequestTimeoutInSecond} seconds. Error {ex.Message}");
                    }
                });
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Constructor
 /// </summary>
 public ShowService(ITmdbService tmdbService)
 {
     _tmdbService = tmdbService;
 }
Exemplo n.º 4
0
 public Facade(ITmdbService tmdb, IUnitOfWork context, IMapper mapper)
 {
     this.tmdb    = tmdb;
     this.context = context;
     this.mapper  = mapper;
 }
Exemplo n.º 5
0
 public TmdbSearchViewModel(ITmdbService tmdbService)
 {
     this.tmdbService = tmdbService;
 }
Exemplo n.º 6
0
 public SeedService(ITmdbService service)
 {
     this.service = service ?? throw new ArgumentNullException(nameof(service));
 }