From 24d91d9363ec909688c571f133db4ebf0fde7f86 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 7 Jul 2017 18:04:46 -0400 Subject: update image inheritance --- MediaBrowser.Api/EnvironmentService.cs | 58 +++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) (limited to 'MediaBrowser.Api/EnvironmentService.cs') diff --git a/MediaBrowser.Api/EnvironmentService.cs b/MediaBrowser.Api/EnvironmentService.cs index c4cb0cb1d..9764a71db 100644 --- a/MediaBrowser.Api/EnvironmentService.cs +++ b/MediaBrowser.Api/EnvironmentService.cs @@ -50,6 +50,20 @@ namespace MediaBrowser.Api } } + [Route("/Environment/ValidatePath", "POST", Summary = "Gets the contents of a given directory in the file system")] + public class ValidatePath + { + /// + /// Gets or sets the path. + /// + /// The path. + [ApiMember(Name = "Path", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")] + public string Path { get; set; } + + public bool ValidateWriteable { get; set; } + public bool? IsFile { get; set; } + } + [Route("/Environment/NetworkShares", "GET", Summary = "Gets shares from a network device")] public class GetNetworkShares : IReturn> { @@ -112,7 +126,7 @@ namespace MediaBrowser.Api /// The _network manager /// private readonly INetworkManager _networkManager; - private IFileSystem _fileSystem; + private readonly IFileSystem _fileSystem; /// /// Initializes a new instance of the class. @@ -129,6 +143,48 @@ namespace MediaBrowser.Api _fileSystem = fileSystem; } + public void Post(ValidatePath request) + { + if (request.IsFile.HasValue) + { + if (request.IsFile.Value) + { + if (!_fileSystem.FileExists(request.Path)) + { + throw new FileNotFoundException("File not found", request.Path); + } + } + else + { + if (!_fileSystem.DirectoryExists(request.Path)) + { + throw new FileNotFoundException("File not found", request.Path); + } + } + } + + else + { + if (!_fileSystem.FileExists(request.Path) && !_fileSystem.DirectoryExists(request.Path)) + { + throw new FileNotFoundException("Path not found", request.Path); + } + + if (request.ValidateWriteable) + { + EnsureWriteAccess(request.Path); + } + } + } + + protected void EnsureWriteAccess(string path) + { + var file = Path.Combine(path, Guid.NewGuid().ToString()); + + _fileSystem.WriteAllText(file, string.Empty); + _fileSystem.DeleteFile(file); + } + public object Get(GetDefaultDirectoryBrowser request) { var result = new DefaultDirectoryBrowserInfo(); -- cgit v1.2.3