aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Resolvers/FolderResolver.cs
diff options
context:
space:
mode:
authorLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-07-12 02:55:27 -0400
committerLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-07-12 02:55:27 -0400
commitb50f78e5da6f3fdfc59e577ca61b88771da7d211 (patch)
tree644ba93dc04bb8837a19a9cd5c3dfa8c6d62a91d /MediaBrowser.Controller/Resolvers/FolderResolver.cs
Initial check-in
Diffstat (limited to 'MediaBrowser.Controller/Resolvers/FolderResolver.cs')
-rw-r--r--MediaBrowser.Controller/Resolvers/FolderResolver.cs45
1 files changed, 45 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/Resolvers/FolderResolver.cs b/MediaBrowser.Controller/Resolvers/FolderResolver.cs
new file mode 100644
index 000000000..5c57c6bb3
--- /dev/null
+++ b/MediaBrowser.Controller/Resolvers/FolderResolver.cs
@@ -0,0 +1,45 @@
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using MediaBrowser.Controller.Events;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Controller.Xml;
+
+namespace MediaBrowser.Controller.Resolvers
+{
+ public class FolderResolver : BaseFolderResolver<Folder>
+ {
+ protected override Folder Resolve(ItemResolveEventArgs args)
+ {
+ if (args.IsFolder)
+ {
+ return new Folder();
+ }
+
+ return null;
+ }
+ }
+
+ public abstract class BaseFolderResolver<T> : BaseItemResolver<T>
+ where T : Folder, new ()
+ {
+ protected override void SetItemValues(T item, ItemResolveEventArgs args)
+ {
+ base.SetItemValues(item, args);
+
+ item.IsRoot = args.Parent == null;
+
+ PopulateFolderMetadata(item, args);
+ }
+
+ private void PopulateFolderMetadata(Folder folder, ItemResolveEventArgs args)
+ {
+ var metadataFile = args.GetFileByName("folder.xml");
+
+ if (metadataFile.HasValue)
+ {
+ new FolderXmlParser().Fetch(folder, metadataFile.Value.Key);
+ }
+ }
+ }
+}