using System; using System.Collections.Generic; using System.IO; using FluentValidation.Results; using NzbDrone.Core.Extras.Metadata.Files; using NzbDrone.Core.MediaFiles; using NzbDrone.Core.Movies; using NzbDrone.Core.ThingiProvider; namespace NzbDrone.Core.Extras.Metadata { public abstract class MetadataBase : IMetadata where TSettings : IProviderConfig, new() { public abstract string Name { get; } public Type ConfigContract => typeof(TSettings); public virtual ProviderMessage Message => null; public IEnumerable DefaultDefinitions => new List(); public ProviderDefinition Definition { get; set; } public ValidationResult Test() { return new ValidationResult(); } public virtual string GetFilenameAfterMove(Movie movie, MovieFile movieFile, MetadataFile metadataFile) { var existingFilename = Path.Combine(movie.Path, metadataFile.RelativePath); var extension = Path.GetExtension(existingFilename).TrimStart('.'); var newFileName = Path.ChangeExtension(Path.Combine(movie.Path, movieFile.RelativePath), extension); return newFileName; } public abstract MetadataFile FindMetadataFile(Movie movie, string path); public abstract MetadataFileResult MovieMetadata(Movie movie, MovieFile movieFile); public abstract List MovieImages(Movie movie); public virtual object RequestAction(string action, IDictionary query) { return null; } protected TSettings Settings => (TSettings)Definition.Settings; public override string ToString() { return GetType().Name; } } }