using System.Collections.Generic; using FluentValidation; using Lidarr.Http; using NzbDrone.Core.RootFolders; using NzbDrone.Core.Validation.Paths; using NzbDrone.SignalR; namespace Lidarr.Api.V1.RootFolders { public class RootFolderModule : LidarrRestModuleWithSignalR { private readonly IRootFolderService _rootFolderService; public RootFolderModule(IRootFolderService rootFolderService, IBroadcastSignalRMessage signalRBroadcaster, RootFolderValidator rootFolderValidator, PathExistsValidator pathExistsValidator, MappedNetworkDriveValidator mappedNetworkDriveValidator, StartupFolderValidator startupFolderValidator, SystemFolderValidator systemFolderValidator, FolderWritableValidator folderWritableValidator) : base(signalRBroadcaster) { _rootFolderService = rootFolderService; GetResourceAll = GetRootFolders; GetResourceById = GetRootFolder; CreateResource = CreateRootFolder; DeleteResource = DeleteFolder; SharedValidator.RuleFor(c => c.Path) .Cascade(CascadeMode.StopOnFirstFailure) .IsValidPath() .SetValidator(rootFolderValidator) .SetValidator(mappedNetworkDriveValidator) .SetValidator(startupFolderValidator) .SetValidator(pathExistsValidator) .SetValidator(systemFolderValidator) .SetValidator(folderWritableValidator); } private RootFolderResource GetRootFolder(int id) { return _rootFolderService.Get(id).ToResource(); } private int CreateRootFolder(RootFolderResource rootFolderResource) { var model = rootFolderResource.ToModel(); return _rootFolderService.Add(model).Id; } private List GetRootFolders() { return _rootFolderService.AllWithUnmappedFolders().ToResource(); } private void DeleteFolder(int id) { _rootFolderService.Remove(id); } } }