mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-29 13:26:44 +01:00
Return BadRequest when an invalid set of filters is given
This commit is contained in:
@@ -10,6 +10,7 @@ using Jellyfin.Database.Implementations.Entities;
|
||||
using Jellyfin.Database.Implementations.Enums;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.Querying;
|
||||
|
||||
namespace MediaBrowser.Controller.Entities
|
||||
{
|
||||
@@ -388,5 +389,75 @@ namespace MediaBrowser.Controller.Entities
|
||||
|
||||
User = user;
|
||||
}
|
||||
|
||||
public void ApplyFilters(ItemFilter[] filters)
|
||||
{
|
||||
static void ThrowConflictingFilters()
|
||||
=> throw new ArgumentException("Conflicting filters", nameof(filters));
|
||||
|
||||
foreach (var filter in filters)
|
||||
{
|
||||
switch (filter)
|
||||
{
|
||||
case ItemFilter.IsFolder:
|
||||
if (filters.Contains(ItemFilter.IsNotFolder))
|
||||
{
|
||||
ThrowConflictingFilters();
|
||||
}
|
||||
|
||||
IsFolder = true;
|
||||
break;
|
||||
case ItemFilter.IsNotFolder:
|
||||
if (filters.Contains(ItemFilter.IsFolder))
|
||||
{
|
||||
ThrowConflictingFilters();
|
||||
}
|
||||
|
||||
IsFolder = false;
|
||||
break;
|
||||
case ItemFilter.IsUnplayed:
|
||||
if (filters.Contains(ItemFilter.IsPlayed))
|
||||
{
|
||||
ThrowConflictingFilters();
|
||||
}
|
||||
|
||||
IsPlayed = false;
|
||||
break;
|
||||
case ItemFilter.IsPlayed:
|
||||
if (filters.Contains(ItemFilter.IsUnplayed))
|
||||
{
|
||||
ThrowConflictingFilters();
|
||||
}
|
||||
|
||||
IsPlayed = true;
|
||||
break;
|
||||
case ItemFilter.IsFavorite:
|
||||
IsFavorite = true;
|
||||
break;
|
||||
case ItemFilter.IsResumable:
|
||||
IsResumable = true;
|
||||
break;
|
||||
case ItemFilter.Likes:
|
||||
if (filters.Contains(ItemFilter.Dislikes))
|
||||
{
|
||||
ThrowConflictingFilters();
|
||||
}
|
||||
|
||||
IsLiked = true;
|
||||
break;
|
||||
case ItemFilter.Dislikes:
|
||||
if (filters.Contains(ItemFilter.Likes))
|
||||
{
|
||||
ThrowConflictingFilters();
|
||||
}
|
||||
|
||||
IsLiked = false;
|
||||
break;
|
||||
case ItemFilter.IsFavoriteOrLikes:
|
||||
IsFavoriteOrLiked = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user