public JsonResult GetDirectories(string term)
        {
            IEnumerable <string> dirs = null;

            try
            {
                //Windows (Including UNC)
                var windowsSep = term.LastIndexOf('\\');

                if (windowsSep > -1)
                {
                    dirs = _diskProvider.GetDirectories(term.Substring(0, windowsSep + 1));
                }

                //Unix
                var index = term.LastIndexOf('/');

                if (index > -1)
                {
                    dirs = _diskProvider.GetDirectories(term.Substring(0, index + 1));
                }
            }
            catch (Exception)
            {
                return(Json(new List <string>(), JsonRequestBehavior.AllowGet));
                //Swallow the exceptions so proper JSON is returned to the client (Empty results)
            }

            if (dirs == null)
            {
                throw new Exception("A valid path was not provided");
            }

            return(Json(dirs, JsonRequestBehavior.AllowGet));
        }
        public virtual void ProcessDropFolder(string dropFolder)
        {
            foreach (var subfolder in _diskProvider.GetDirectories(dropFolder))
            {
                try
                {
                    if (!_seriesProvider.SeriesPathExists(subfolder))
                    {
                        ProcessDownload(new DirectoryInfo(subfolder));
                    }
                }
                catch (Exception e)
                {
                    Logger.ErrorException("An error has occurred while importing folder: " + subfolder, e);
                }
            }

            foreach (var videoFile in _diskScanProvider.GetVideoFiles(dropFolder, false))
            {
                try
                {
                    ProcessVideoFile(videoFile);
                }
                catch (Exception ex)
                {
                    Logger.ErrorException("An error has occurred while importing video file" + videoFile, ex);
                }
            }
        }
예제 #3
0
        public virtual List <String> GetUnmappedFolders(string path)
        {
            Logger.Debug("Generating list of unmapped folders");
            if (String.IsNullOrEmpty(path))
            {
                throw new ArgumentException("Invalid path provided", "path");
            }

            var results = new List <String>();

            if (!_diskProvider.FolderExists(path))
            {
                Logger.Debug("Path supplied does not exist: {0}", path);
                return(results);
            }

            foreach (string seriesFolder in _diskProvider.GetDirectories(path))
            {
                if (!_seriesProvider.SeriesPathExists(seriesFolder))
                {
                    results.Add(seriesFolder.Normalize());
                }
            }

            Logger.Debug("{0} unmapped folders detected.", results.Count);
            return(results);
        }
        public virtual void Empty()
        {
            if (String.IsNullOrWhiteSpace(_configProvider.RecycleBin))
            {
                logger.Info("Recycle Bin has not been configured, cannot empty.");
                return;
            }

            logger.Info("Removing all items from the recycling bin");

            foreach (var folder in _diskProvider.GetDirectories(_configProvider.RecycleBin))
            {
                _diskProvider.DeleteFolder(folder, true);
            }

            foreach (var file in _diskProvider.GetFiles(_configProvider.RecycleBin, SearchOption.TopDirectoryOnly))
            {
                _diskProvider.DeleteFile(file);
            }

            logger.Trace("Recycling Bin has been emptied.");
        }
예제 #5
0
        //PostDownloadView
        public ActionResult PendingProcessing()
        {
            ViewData["DropDir"] = _configProvider.DownloadClientTvDirectory;

            var dropDir    = _configProvider.DownloadClientTvDirectory;
            var subFolders = _diskProvider.GetDirectories(dropDir);

            var models = new List <PendingProcessingModel>();

            //Get the CreationTime and Files
            foreach (var folder in subFolders)
            {
                var model = new PendingProcessingModel();
                model.Name    = new DirectoryInfo(folder).Name;
                model.Created = _diskProvider.DirectoryDateCreated(folder).ToString();
                model.Path    = folder.Replace(Path.DirectorySeparatorChar, '|').Replace(Path.VolumeSeparatorChar, '^').Replace('\'', '`');

                var files = _diskProvider.GetFileInfos(folder, "*.*", SearchOption.AllDirectories);

                var fileResult = "<div><div style=\"width: 600px; display: inline-block;\"><b>Name</b></div><div style=\"display: inline-block;\"><b>Size</b></div></div>";

                foreach (var fileInfo in files)
                {
                    fileResult += String.Format("<div><div style=\"width: 600px; display: inline-block;\">{0}</div><div style=\"display: inline-block;\">{1}</div></div>", fileInfo.Name,
                                                fileInfo.Length.ToBestFileSize(1));
                }

                model.Files = fileResult;

                models.Add(model);
            }

            var serialized = new JavaScriptSerializer().Serialize(models);

            return(View((object)serialized));
        }