Ejemplo n.º 1
0
        public object Get(GetSimilarItems request)
        {
            var user = !request.UserId.Equals(Guid.Empty) ? _userManager.GetUserById(request.UserId) : null;

            var item = string.IsNullOrEmpty(request.Id) ?
                       (!request.UserId.Equals(Guid.Empty) ? _libraryManager.GetUserRootFolder() :
                        _libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id);

            var program = item as IHasProgramAttributes;

            if (item is Movie || (program != null && program.IsMovie) || item is Trailer)
            {
                return(new MoviesService(_userManager, _libraryManager, _dtoService, _config, _authContext)
                {
                    Request = Request,
                }.GetSimilarItemsResult(request));
            }

            if (program != null && program.IsSeries)
            {
                return(GetSimilarItemsResult(request, new[] { typeof(Series).Name }));
            }

            if (item is Episode || (item is IItemByName && !(item is MusicArtist)))
            {
                return(new QueryResult <BaseItemDto>());
            }

            return(GetSimilarItemsResult(request, new[] { item.GetType().Name }));
        }
Ejemplo n.º 2
0
        public object Get(GetSimilarItems request)
        {
            var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null;

            var item = string.IsNullOrEmpty(request.Id) ?
                       (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder :
                        _libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id);

            if (item is Game)
            {
                return(new GamesService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService, _authContext)
                {
                    Request = Request,
                }.Get(new GetSimilarGames
                {
                    Fields = request.Fields,
                    Id = request.Id,
                    Limit = request.Limit,
                    UserId = request.UserId
                }));
            }
            if (item is MusicAlbum)
            {
                return(new AlbumsService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService, _authContext)
                {
                    Request = Request,
                }.Get(new GetSimilarAlbums
                {
                    Fields = request.Fields,
                    Id = request.Id,
                    Limit = request.Limit,
                    UserId = request.UserId,
                    ExcludeArtistIds = request.ExcludeArtistIds
                }));
            }
            if (item is MusicArtist)
            {
                return(new AlbumsService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService, _authContext)
                {
                    Request = Request,
                }.Get(new GetSimilarArtists
                {
                    Fields = request.Fields,
                    Id = request.Id,
                    Limit = request.Limit,
                    UserId = request.UserId
                }));
            }

            var program = item as IHasProgramAttributes;

            if (item is Movie || (program != null && program.IsMovie) || item is Trailer)
            {
                return(new MoviesService(_userManager, _libraryManager, _dtoService, _config, _authContext)
                {
                    Request = Request,
                }.Get(new GetSimilarMovies
                {
                    Fields = request.Fields,
                    Id = request.Id,
                    Limit = request.Limit,
                    UserId = request.UserId
                }));
            }

            if (item is Series || (program != null && program.IsSeries))
            {
                return(new TvShowsService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService, _tvManager, _authContext)
                {
                    Request = Request,
                }.Get(new GetSimilarShows
                {
                    Fields = request.Fields,
                    Id = request.Id,
                    Limit = request.Limit,
                    UserId = request.UserId
                }));
            }

            return(new QueryResult <BaseItemDto>());
        }
Ejemplo n.º 3
0
        public object Get(GetSimilarItems request)
        {
            var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null;

            var item = string.IsNullOrEmpty(request.Id) ?
                       (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder :
                        _libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id);

            if (item is Game)
            {
                return(new GamesService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService)
                {
                    AuthorizationContext = AuthorizationContext,
                    Logger = Logger,
                    Request = Request,
                    SessionContext = SessionContext,
                    ResultFactory = ResultFactory
                }.Get(new GetSimilarGames
                {
                    Fields = request.Fields,
                    Id = request.Id,
                    Limit = request.Limit,
                    UserId = request.UserId
                }));
            }
            if (item is MusicAlbum)
            {
                return(new AlbumsService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService)
                {
                    AuthorizationContext = AuthorizationContext,
                    Logger = Logger,
                    Request = Request,
                    SessionContext = SessionContext,
                    ResultFactory = ResultFactory
                }.Get(new GetSimilarAlbums
                {
                    Fields = request.Fields,
                    Id = request.Id,
                    Limit = request.Limit,
                    UserId = request.UserId
                }));
            }
            if (item is MusicArtist)
            {
                return(new AlbumsService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService)
                {
                    AuthorizationContext = AuthorizationContext,
                    Logger = Logger,
                    Request = Request,
                    SessionContext = SessionContext,
                    ResultFactory = ResultFactory
                }.Get(new GetSimilarArtists
                {
                    Fields = request.Fields,
                    Id = request.Id,
                    Limit = request.Limit,
                    UserId = request.UserId
                }));
            }

            var program = item as IHasProgramAttributes;

            if (item is Movie || (program != null && program.IsMovie) || item is Trailer)
            {
                return(new MoviesService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService)
                {
                    AuthorizationContext = AuthorizationContext,
                    Logger = Logger,
                    Request = Request,
                    SessionContext = SessionContext,
                    ResultFactory = ResultFactory
                }.Get(new GetSimilarMovies
                {
                    Fields = request.Fields,
                    Id = request.Id,
                    Limit = request.Limit,
                    UserId = request.UserId
                }));
            }

            if (item is Series || (program != null && program.IsSeries))
            {
                return(new TvShowsService(_userManager, _userDataManager, _libraryManager, _itemRepo, _dtoService, _tvManager)
                {
                    AuthorizationContext = AuthorizationContext,
                    Logger = Logger,
                    Request = Request,
                    SessionContext = SessionContext,
                    ResultFactory = ResultFactory
                }.Get(new GetSimilarShows
                {
                    Fields = request.Fields,
                    Id = request.Id,
                    Limit = request.Limit,
                    UserId = request.UserId
                }));
            }

            return(new ItemsResult());
        }