aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Library/Resolvers/VideoExtraResolver.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations/Library/Resolvers/VideoExtraResolver.cs')
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/VideoExtraResolver.cs55
1 files changed, 55 insertions, 0 deletions
diff --git a/Emby.Server.Implementations/Library/Resolvers/VideoExtraResolver.cs b/Emby.Server.Implementations/Library/Resolvers/VideoExtraResolver.cs
new file mode 100644
index 000000000..9aadce88c
--- /dev/null
+++ b/Emby.Server.Implementations/Library/Resolvers/VideoExtraResolver.cs
@@ -0,0 +1,55 @@
+#nullable disable
+
+using Emby.Naming.Common;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Resolvers;
+using MediaBrowser.Model.Entities;
+
+namespace Emby.Server.Implementations.Library.Resolvers
+{
+ /// <summary>
+ /// Resolves a Path into a Video or Video subclass.
+ /// </summary>
+ public class VideoExtraResolver : BaseVideoResolver<Video>
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="VideoExtraResolver"/> class.
+ /// </summary>
+ /// <param name="namingOptions">The naming options.</param>
+ public VideoExtraResolver(NamingOptions namingOptions)
+ : base(namingOptions)
+ {
+ }
+
+ /// <summary>
+ /// Gets the priority.
+ /// </summary>
+ /// <value>The priority.</value>
+ public override ResolverPriority Priority => ResolverPriority.Last;
+
+ /// <summary>
+ /// Resolves the specified args.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns>The video extra or null if not handled by this resolver.</returns>
+ public override Video Resolve(ItemResolveArgs args)
+ {
+ // Only handle owned items
+ if (args.Parent != null)
+ {
+ return null;
+ }
+
+ var ownedItem = base.Resolve(args);
+
+ // Re-resolve items that have their own type
+ if (ownedItem.ExtraType == ExtraType.Trailer)
+ {
+ ownedItem = ResolveVideo<Trailer>(args, false);
+ }
+
+ return ownedItem;
+ }
+ }
+}