1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-11-05 10:32:35 +01:00
Radarr/NzbDrone.Api/Directories/DirectoryModule.cs

58 lines
1.6 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using Nancy;
2013-02-23 21:35:26 +01:00
using NzbDrone.Api.Extensions;
using NzbDrone.Common;
namespace NzbDrone.Api.Directories
{
public class DirectoryModule : NzbDroneApiModule
{
2013-05-11 01:53:50 +02:00
private readonly IDiskProvider _diskProvider;
2013-05-11 01:53:50 +02:00
public DirectoryModule(IDiskProvider diskProvider)
: base("/directories")
{
_diskProvider = diskProvider;
2013-02-16 00:38:53 +01:00
Get["/"] = x => GetDirectories();
}
private Response GetDirectories()
{
2013-02-16 00:38:53 +01:00
if (!Request.Query.query.HasValue)
return new List<string>().AsResponse();
2013-02-16 00:38:53 +01:00
string query = Request.Query.query.Value;
IEnumerable<String> dirs = null;
try
{
//Windows (Including UNC)
var windowsSep = query.LastIndexOf('\\');
if (windowsSep > -1)
{
dirs = _diskProvider.GetDirectories(query.Substring(0, windowsSep + 1));
}
//Unix
var index = query.LastIndexOf('/');
if (index > -1)
{
dirs = _diskProvider.GetDirectories(query.Substring(0, index + 1));
}
}
catch (Exception)
{
//Swallow the exceptions so proper JSON is returned to the client (Empty results)
return new List<string>().AsResponse();
}
if (dirs == null)
throw new Exception("A valid path was not provided");
return dirs.AsResponse();
}
}
}