aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Resolvers
diff options
context:
space:
mode:
authorAndrew Rabert <ar@nullsum.net>2018-12-27 18:27:57 -0500
committerAndrew Rabert <ar@nullsum.net>2018-12-27 18:27:57 -0500
commita86b71899ec52c44ddc6c3018e8cc5e9d7ff4d62 (patch)
treea74f6ea4a8abfa1664a605d31d48bc38245ccf58 /MediaBrowser.Controller/Resolvers
parent9bac3ac616b01f67db98381feb09d34ebe821f9a (diff)
Add GPL modules
Diffstat (limited to 'MediaBrowser.Controller/Resolvers')
-rw-r--r--MediaBrowser.Controller/Resolvers/BaseItemResolver.cs61
-rw-r--r--MediaBrowser.Controller/Resolvers/IItemResolver.cs48
-rw-r--r--MediaBrowser.Controller/Resolvers/IResolverIgnoreRule.cs15
-rw-r--r--MediaBrowser.Controller/Resolvers/ResolverPriority.cs27
4 files changed, 151 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs b/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs
new file mode 100644
index 0000000000..fc5157d5ff
--- /dev/null
+++ b/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs
@@ -0,0 +1,61 @@
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
+
+namespace MediaBrowser.Controller.Resolvers
+{
+ /// <summary>
+ /// Class ItemResolver
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ public abstract class ItemResolver<T> : IItemResolver
+ where T : BaseItem, new()
+ {
+ /// <summary>
+ /// Resolves the specified args.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns>`0.</returns>
+ protected virtual T Resolve(ItemResolveArgs args)
+ {
+ return null;
+ }
+
+ /// <summary>
+ /// Gets the priority.
+ /// </summary>
+ /// <value>The priority.</value>
+ public virtual ResolverPriority Priority
+ {
+ get
+ {
+ return ResolverPriority.First;
+ }
+ }
+
+ /// <summary>
+ /// Sets initial values on the newly resolved item
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <param name="args">The args.</param>
+ protected virtual void SetInitialItemValues(T item, ItemResolveArgs args)
+ {
+ }
+
+ /// <summary>
+ /// Resolves the path.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns>BaseItem.</returns>
+ BaseItem IItemResolver.ResolvePath(ItemResolveArgs args)
+ {
+ var item = Resolve(args);
+
+ if (item != null)
+ {
+ SetInitialItemValues(item, args);
+ }
+
+ return item;
+ }
+ }
+}
diff --git a/MediaBrowser.Controller/Resolvers/IItemResolver.cs b/MediaBrowser.Controller/Resolvers/IItemResolver.cs
new file mode 100644
index 0000000000..3af5d5f7f6
--- /dev/null
+++ b/MediaBrowser.Controller/Resolvers/IItemResolver.cs
@@ -0,0 +1,48 @@
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Providers;
+using System.Collections.Generic;
+
+using MediaBrowser.Controller.IO;
+using MediaBrowser.Model.IO;
+
+namespace MediaBrowser.Controller.Resolvers
+{
+ /// <summary>
+ /// Interface IItemResolver
+ /// </summary>
+ public interface IItemResolver
+ {
+ /// <summary>
+ /// Resolves the path.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns>BaseItem.</returns>
+ BaseItem ResolvePath(ItemResolveArgs args);
+ /// <summary>
+ /// Gets the priority.
+ /// </summary>
+ /// <value>The priority.</value>
+ ResolverPriority Priority { get; }
+ }
+
+ public interface IMultiItemResolver
+ {
+ MultiItemResolverResult ResolveMultiple(Folder parent,
+ List<FileSystemMetadata> files,
+ string collectionType,
+ IDirectoryService directoryService);
+ }
+
+ public class MultiItemResolverResult
+ {
+ public List<BaseItem> Items { get; set; }
+ public List<FileSystemMetadata> ExtraFiles { get; set; }
+
+ public MultiItemResolverResult()
+ {
+ Items = new List<BaseItem>();
+ ExtraFiles = new List<FileSystemMetadata>();
+ }
+ }
+}
diff --git a/MediaBrowser.Controller/Resolvers/IResolverIgnoreRule.cs b/MediaBrowser.Controller/Resolvers/IResolverIgnoreRule.cs
new file mode 100644
index 0000000000..25537193a9
--- /dev/null
+++ b/MediaBrowser.Controller/Resolvers/IResolverIgnoreRule.cs
@@ -0,0 +1,15 @@
+
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.IO;
+using MediaBrowser.Model.IO;
+
+namespace MediaBrowser.Controller.Resolvers
+{
+ /// <summary>
+ /// Provides a base "rule" that anyone can use to have paths ignored by the resolver
+ /// </summary>
+ public interface IResolverIgnoreRule
+ {
+ bool ShouldIgnore(FileSystemMetadata fileInfo, BaseItem parent);
+ }
+}
diff --git a/MediaBrowser.Controller/Resolvers/ResolverPriority.cs b/MediaBrowser.Controller/Resolvers/ResolverPriority.cs
new file mode 100644
index 0000000000..df5edeb05f
--- /dev/null
+++ b/MediaBrowser.Controller/Resolvers/ResolverPriority.cs
@@ -0,0 +1,27 @@
+
+namespace MediaBrowser.Controller.Resolvers
+{
+ /// <summary>
+ /// Enum ResolverPriority
+ /// </summary>
+ public enum ResolverPriority
+ {
+ /// <summary>
+ /// The first
+ /// </summary>
+ First = 1,
+ /// <summary>
+ /// The second
+ /// </summary>
+ Second = 2,
+ /// <summary>
+ /// The third
+ /// </summary>
+ Third = 3,
+ Fourth = 4,
+ /// <summary>
+ /// The last
+ /// </summary>
+ Last = 5
+ }
+}