using System; using System.Collections.Generic; using System.ComponentModel.Composition; using Kyoo.Abstractions.Controllers; namespace Kyoo.Abstractions.Models.Attributes { /// /// An attribute to inform how a works. /// [MetadataAttribute] [AttributeUsage(AttributeTargets.Class)] public class FileSystemMetadataAttribute : Attribute { /// /// The scheme(s) used to identify this path. /// It can be something like http, https, ftp, file and so on. /// /// /// If multiples files with the same schemes exists, an exception will be thrown. /// public string[] Scheme { get; } /// /// true if the scheme should be removed from the path before calling /// methods of this , false otherwise. /// public bool StripScheme { get; set; } /// /// Create a new using the specified schemes. /// /// The schemes to use. public FileSystemMetadataAttribute(string[] schemes) { Scheme = schemes; } /// /// Create a new using a dictionary of metadata. /// /// /// The dictionary of metadata. This method expect the dictionary to contain a field /// per property in this attribute, with the same types as the properties of this attribute. /// public FileSystemMetadataAttribute(IDictionary metadata) { Scheme = (string[])metadata[nameof(Scheme)]; StripScheme = (bool)metadata[nameof(StripScheme)]; } } }