Example #1
0
 public void Startup()
 {
     if (BaseFolder.EndsWith(".iro", StringComparison.InvariantCultureIgnoreCase))
     {
         System.Diagnostics.Debug.WriteLine("      Loading archive " + BaseFolder);
         _archive = new IrosArc(BaseFolder);
         ScanChunk();
     }
 }
Example #2
0
 public override int GetHashCode()
 {
     unchecked
     {
         var result = BaseFolder.GetHashCode();
         result = (result * 397) ^ FileName.GetHashCode();
         result = (result * 397) ^ Site.GetHashCode();
         return(result);
     }
 }
Example #3
0
        public void GetSubFolder(BaseFolder folder, IList <string> paths)
        {
            paths.Add(folder.GetFullHashPath());
            var type       = folder.GetType();
            var properties = type.GetProperties()
                             .Where(x => x.CustomAttributes.Any(y => y.AttributeType == typeof(FolderAttribute))).ToList();

            foreach (var property in properties)
            {
                GetSubFolder((BaseFolder)property.GetValue(folder), paths);
            }
        }
Example #4
0
        private void CreateFolderStructure()
        {
            var pathParts    = BaseFolder.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
            var lastPathPart = pathParts.LastOrDefault();

            if (!string.Equals(lastPathPart, "taskdata", StringComparison.OrdinalIgnoreCase))
            {
                BaseFolder = Path.Combine(BaseFolder, "TASKDATA");
            }

            Directory.CreateDirectory(BaseFolder);
        }
Example #5
0
        public TaskData(IEnumerable<Task> tasks, IEnumerable<Folder> folders, BaseFolder currentFolder, string filter)
        {
            Contract.Requires(tasks != null, "tasks");
            Contract.Requires(null != folders, "folders");
            Contract.Requires(null != currentFolder, "currentFolder");

            folders.ForEach(folder => AddFolder(folder));
            m_userFolders = new ReadOnlyCollection<Folder>(m_folderList);
            tasks.ForEach(task => AddTask(task));
            CurrentFolder = currentFolder;
            m_filter = filter;
            refreshAllFolders();
        }
Example #6
0
        public void GetSubFolder(BaseFolder folder, IList <string> paths)
        {
            _logger.LogInformation($"{nameof(FileService)}.{nameof(GetSubFolder)}.Start");
            paths.Add(folder.GetFullHashPath());
            var type       = folder.GetType();
            var properties = type.GetProperties()
                             .Where(x => x.CustomAttributes.Any(y => y.AttributeType == typeof(FolderAttribute))).ToList();

            foreach (var property in properties)
            {
                GetSubFolder((BaseFolder)property.GetValue(folder), paths);
            }
            _logger.LogInformation($"{nameof(FileService)}.{nameof(GetSubFolder)}.End");
        }
Example #7
0
        public static async Task DeleteStuckFiles()
        {
            var undeletedDir = GetUndeletedFilesDirectory();

            try
            {
                // Remove undeleted files
                var undeletedFolder = await StorageFolder.GetFolderFromPathAsync(undeletedDir);

                foreach (var storageFile in await undeletedFolder.GetFilesAsync())
                {
                    try
                    {
                        var badFilePath = await FileIO.ReadTextAsync(storageFile);
                        await SafeFileDelete(badFilePath);
                        await SafeFileDelete(storageFile);
                    }
                    catch
                    {
                        // Continue
                    }
                }

                // Remove failed downloads
                var queryOptions = new QueryOptions(CommonFileQuery.DefaultQuery, new[] { DownloadableViewModelBase.DownloadExtension });
                queryOptions.FolderDepth = FolderDepth.Deep;

                var storageFiles = (await BaseFolder.CreateFileQueryWithOptions(queryOptions).GetFilesAsync())
                                   .Concat(await AudioFolder.CreateFileQueryWithOptions(queryOptions).GetFilesAsync());
                foreach (var storageFile in storageFiles)
                {
                    try
                    {
                        await SafeFileDelete(storageFile);
                    }
                    catch
                    {
                        // Continue
                    }
                }
            }
            catch
            {
                // Do nothing
            }
        }
Example #8
0
        private IEnumerable <string> AlternativeModuleScan(PsRequest request)
        {
            var psModulePath = Environment.GetEnvironmentVariable("PSModulePath") ?? "";

            IEnumerable <string> paths = psModulePath.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

            // add assumed paths just in case the environment variable isn't really set.
            try {
                paths = paths.ConcatSingleItem(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), @"WindowsPowerShell\v1.0\Modules"));
            } catch {
                // skip the folder if it's not valid
            }
            try {
                paths = paths.ConcatSingleItem(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), @"WindowsPowerShell\Modules"));
            }
            catch {
                // skip the folder if it's not valid
            }

            if (!string.IsNullOrWhiteSpace(BaseFolder) && BaseFolder.DirectoryExists())
            {
                paths = paths.ConcatSingleItem(BaseFolder);
            }

            paths = paths.Distinct(new PathEqualityComparer(PathCompareOption.Full)).ToArray();

            var moduleFolders = paths.Where(each => each.DirectoryExists()).SelectMany(each => Directory.EnumerateDirectories(each).Where(dir => !_exclusionList.Contains(Path.GetFileName(dir))));

            var modules = moduleFolders.Select(module => {
                var moduleManifest = Path.Combine(module, Path.GetFileName(module) + ".psd1");
                if (File.Exists(moduleManifest))
                {
                    return(moduleManifest);
                }

                var versions = Directory.EnumerateDirectories(module).Select(dir => new { folder = dir, ver = (FourPartVersion)Path.GetFileName(dir) }).Where(each => each.ver > 0L).OrderByDescending(each => each).Select(each => each.folder);

                return(versions.Select(version => Path.Combine(version, Path.GetFileName(Path.GetFileName(module)) + ".psd1")).FirstOrDefault(File.Exists));
            }).WhereNotNull();

            return(modules.Where(moduleName => File.ReadAllText(moduleName).IndexOf("PackageManagementProviders", StringComparison.OrdinalIgnoreCase) > -1));
        }
Example #9
0
        /// <summary>
        /// Creates Quran root directory.
        /// </summary>
        /// <returns></returns>
        public async static Task MakeQuranDirectory(ScreenInfo qsi)
        {
            if (qsi == null)
            {
                throw new ArgumentNullException(nameof(qsi));
            }

            if (BaseFolder == null)
            {
                BaseFolder = ApplicationData.Current.LocalFolder;
                var quranBaseFolder = await BaseFolder.TryGetItemAsync(QuranBase);

                if (quranBaseFolder == null)
                {
                    quranBaseFolder = await BaseFolder.CreateFolderAsync(QuranBase);
                }
                BaseFolder = quranBaseFolder as StorageFolder;
            }

            if (BaseFolder == null)
            {
                throw new InvalidOperationException("Unable to create a base folder.");
            }

            if (ImageFolder == null)
            {
                var imageFolderName = "width" + qsi.GetWidthParam();
                var quranBaseFolder = await BaseFolder.TryGetItemAsync(imageFolderName);

                if (quranBaseFolder == null)
                {
                    quranBaseFolder = await BaseFolder.CreateFolderAsync(imageFolderName);
                }
                ImageFolder = quranBaseFolder as StorageFolder;
            }

            if (ImageFolder == null)
            {
                throw new InvalidOperationException("Unable to create a base image folder.");
            }
        }
Example #10
0
        private IEnumerable <string> AlternativeModuleScan(PsRequest request)
        {
            var psModulePath = Environment.GetEnvironmentVariable("PSModulePath") ?? "";

            IEnumerable <string> paths = psModulePath.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

            var sysRoot     = Environment.GetEnvironmentVariable("systemroot");
            var userProfile = Environment.GetEnvironmentVariable("userprofile");

            // add assumed paths just in case the environment variable isn't really set.
            paths = paths.ConcatSingleItem(Path.Combine(sysRoot, @"system32\WindowsPowerShell\v1.0\Modules"));
            paths = paths.ConcatSingleItem(Path.Combine(userProfile, @"Documents\WindowsPowerShell\Modules"));

            if (!string.IsNullOrWhiteSpace(BaseFolder) && BaseFolder.DirectoryExists())
            {
                paths = paths.ConcatSingleItem(BaseFolder);
            }

            paths = paths.Distinct().ToArray();

            return(paths.Where(each => each.DirectoryExists()).SelectMany(each => Directory.EnumerateDirectories(each).Where(dir => !_exclusionList.Contains(Path.GetFileName(dir))), (p, child) => Path.Combine(child, Path.GetFileName(child) + ".psd1")).Where(moduleName => File.Exists(moduleName) && File.ReadAllText(moduleName).IndexOf("OneGetProviders", StringComparison.OrdinalIgnoreCase) > -1));
        }
        public void DownloadAsync(MediaType mediaType)
        {
            if (ExecutionStatus == ExecutionStatus.Deleted)
            {
                Delete(); return;
            }
            // Now Download Async calls this
            // UpdateStatus(DownloadState.DownloadStart, 0.0);
            MediaType      = mediaType;
            BaseFolder     = KnownFolders.VideosLibrary;
            ProviderFolder = BaseFolder.GetFolder(Enum.GetName(typeof(ContentProviderType), YoutubeUrl.Provider));
            VideoFolder    = ProviderFolder.GetFolder(DownloadHelper.GetLegalPath(ChannelName));

            if (MediaType == MediaType.Audio)
            {
                var audioFolder = KnownFolders.MusicLibrary;
                ProviderFolder = audioFolder.GetFolder(Enum.GetName(typeof(ContentProviderType), YoutubeUrl.Provider));
                DownloadFolder = ProviderFolder.GetFolder(DownloadHelper.GetLegalPath(ChannelName));
            }

            var videoInCache = false;

            if (!String.IsNullOrEmpty(Title))
            {
                VideoExtension = ".mp4";
                var videoFile1   = DownloadHelper.GetLegalPath(Title) + VideoExtension;
                var storageFile1 = VideoFolder.CreateFile(videoFile1);
                if (!CacheManager.Instance.NeedsDownload(YoutubeUrl.VideoId, storageFile1))
                {
                    videoInCache = true;
                }
            }
            if (!videoInCache)
            {
                var       videoInfos = DownloadHelper.GetDownloadUrlsAsync(Uri);
                VideoInfo videoInfo  = null;
                foreach (VideoInfo info in videoInfos)
                {
                    if (info.VideoType == VideoType.Mp4 && info.Resolution == 360)
                    {
                        videoInfo = info;
                        break;
                    }
                }
                if (videoInfo == null)
                {
                    UpdateStatus(DownloadState.Error);
                    return;
                }
                Title          = videoInfo.Title;
                VideoExtension = videoInfo.VideoExtension;
                var videoFile = DownloadHelper.GetLegalPath(Title) + VideoExtension;
                UpdateStatus(DownloadState.TitleChanged, Percentage);
                var storageFile = VideoFolder.CreateFile(videoFile);
                if (CacheManager.Instance.NeedsDownload(YoutubeUrl.VideoId, storageFile))
                {
                    CacheManager.Instance.SetFinished(YoutubeUrl.VideoId, storageFile.ToString(), false);
                    DownloadHelper.DownloadToFileAsync(this, videoInfo.DownloadUri, storageFile, OnYoutubeLoading);
                    CacheManager.Instance.SetFinished(YoutubeUrl.VideoId, storageFile.ToString(), true);
                    if (OnEntryDownloadStatusChange != null)
                    {
                        OnEntryDownloadStatusChange(this, DownloadState.UpdateCache, Percentage);
                    }
                }
            }
            DownloadState = DownloadState.DownloadFinish;
            //UpdateStatus(DownloadState, (MediaType == MediaType.Audio) ? 50 : 100);
            if (MediaType == MediaType.Audio)
            {
                Percentage = 50.0;
                var converter = new AudioConverter(this, OnAudioConversionStatusChange);
                converter.ConvertToMp3();
            }
            else if (OnEntryDownloadStatusChange != null)
            {
                UpdateStatus(DownloadState.Ready);
            }
        }
 public CustomBackgroundFolder(BaseFolder rootFolder) : base("Custom", rootFolder)
 {
 }
Example #13
0
        public void CreateFolder(BaseFolder folder, string mediaFolder)
        {
            var path = Path.Combine(mediaFolder, folder.GetFullHashPath());

            Directory.CreateDirectory(path);
        }
Example #14
0
 public void SetFolder(BaseFolder folder)
 {
     currentFolder = folder;
     _renderer.Render(currentFolder, ChatId);
 }
Example #15
0
        private async void Init()
        {
            BookFolder = await BaseFolder.CreateFolderAsync("txt", CreationCollisionOption.OpenIfExists);

            ThemeFolder = await BaseFolder.CreateFolderAsync("theme", CreationCollisionOption.OpenIfExists);
        }
Example #16
0
        public void RenameFolder(Folder folder, string newName)
        {
            Contract.Requires(null != folder, "folder");
            Contract.Requires(m_folderList.Contains(folder), "folder");
            Contract.Requires(newName == newName.SuperTrim(), "newName");
            Contract.Requires(Folder.IsValidFolderName(newName), "newName");

            if (folder.Name == newName)
            {
                // no-op
            }
            else if (folder.Name.EasyEquals(newName))
            {
                // just a case change -> easy
                // make darn sure we haven't broken our logic -> should only have folder that matches w/ case
                Debug.Assert(m_folderList.Count(existing => existing.Name.EasyEquals(newName)) == 1);
                folder.UpdateName(newName);
            }
            else if (m_folderList.Count(existing => existing.Name.EasyEquals(newName)) > 0)
            {
                Debug.Assert(m_folderList.Count(existing => existing.Name.EasyEquals(newName)) == 1);
                var target = m_folderList.First(existing => existing.Name.EasyEquals(newName));

                // move existing items to target folder
                m_taskList
                    .Where(task => task.Folder == folder)
                    .ForEach(task => task.Folder = target);

                // nuke existing folder
                m_folderList.Remove(folder);
                if (m_currentFolder == folder)
                {
                    CurrentFolder = target;
                }
            }
            else
            {
                // this is an entirely novel name. Cool!
                // make darn sure we haven't broken our logic -> should have no folder with matching name
                Debug.Assert(m_folderList.Count(existing => existing.Name.EasyEquals(newName)) == 0);
                folder.UpdateName(newName);
            }

            refreshAllFolders();
        }
 public DefaultFolder(BaseFolder rootFolder) : base("Default", rootFolder)
 {
     Smalls    = new SmallDefaultSizeFolder(this);
     Larges    = new LargeDefaultSizeFolder(this);
     Originals = new OriginalSizeFolder(this);
 }
 protected BackgroundSizeFolders(string folderName, BaseFolder rootFolder) : base(folderName, rootFolder)
 {
     Originals = new OriginalSizeFolder(this);
     Mobiles   = new MobileBackgroundSizeFolder(this);
 }
Example #19
0
 protected AvatarSizeFolders(string folderName, BaseFolder rootFolder) : base(folderName, rootFolder)
 {
     Smalls    = new SmallAvatarSizeFolder(this);
     Larges    = new LargeAvatarSizeFolder(this);
     Originals = new OriginalSizeFolder(this);
 }
Example #20
0
 public StandardAvatarFolder(BaseFolder rootFolder) : base("Standard", rootFolder)
 {
 }
Example #21
0
 public CustomAvatarFolder(BaseFolder rootFolder) : base("Custom", rootFolder)
 {
 }
Example #22
0
 public AvatarFolder(BaseFolder rootFolder) : base("Avatar", rootFolder)
 {
     Customs   = new CustomAvatarFolder(this);
     Standards = new StandardAvatarFolder(this);
 }
Example #23
0
        private IEnumerable <string> AlternativeModuleScan(
            PsRequest request,
            Version requiredVersion,
            Version minimumVersion,
            Version maximumVersion,
            ProviderOption providerOption = ProviderOption.LatestVersion)
        {
            var psModulePath = Environment.GetEnvironmentVariable("PSModulePath") ?? "";

            IEnumerable <string> paths = psModulePath.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

            // add assumed paths just in case the environment variable isn't really set.
            try {
#if CORECLR
                paths = paths.ConcatSingleItem(Path.Combine(Environment.GetEnvironmentVariable("windir"), "system32", @"WindowsPowerShell\v1.0\Modules"));
#else
                paths = paths.ConcatSingleItem(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), @"WindowsPowerShell\v1.0\Modules"));
#endif
            } catch {
                // skip the folder if it's not valid
            }
            try {
#if CORECLR
                paths = paths.ConcatSingleItem(Path.Combine(Environment.GetEnvironmentVariable("userprofile"), "documents", @"WindowsPowerShell\Modules"));
#else
                paths = paths.ConcatSingleItem(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), @"WindowsPowerShell\Modules"));
#endif
            } catch {
                // skip the folder if it's not valid
            }

            if (!string.IsNullOrWhiteSpace(BaseFolder) && BaseFolder.DirectoryExists())
            {
                paths = paths.ConcatSingleItem(BaseFolder);
            }

            var moduleFolders = paths.Distinct(new PathEqualityComparer(PathCompareOption.Full)).Where(each => each.DirectoryExists()).SelectMany(each => Directory.EnumerateDirectories(each).Where(dir => !_exclusionList.Contains(Path.GetFileName(dir))));

            foreach (var module in moduleFolders)
            {
                var moduleManifest = Path.Combine(module, Path.GetFileName(module) + ".psd1");
                if (File.Exists(moduleManifest))
                {
                    //The version check is defered in the GetPackageManagementModules() because we do not know the version without looking into the content.
                    yield return(moduleManifest);
                }

                //The following are the cases where there are multiple modules installed on the system. The file folder is the module version.
                var selectedVersions = Directory.EnumerateDirectories(module).Select(dir => new {
                    folder = dir,
                    ver    = (FourPartVersion)Path.GetFileName(dir)
                }).Where(each => each.ver > 0L);

                if (requiredVersion != null)
                {
                    var version = selectedVersions.Where(each => each.ver == (FourPartVersion)requiredVersion).Select(each => each.folder).FirstOrDefault();
                    if (version != null)
                    {
                        var file = Path.Combine(version, Path.GetFileName(Path.GetFileName(module)) + ".psd1");
                        if (File.Exists(file))
                        {
                            yield return(file);
                        }
                    }
                }

                if (minimumVersion != null)
                {
                    selectedVersions = selectedVersions.Where(each => each.ver >= (FourPartVersion)minimumVersion);
                }
                if (maximumVersion != null)
                {
                    selectedVersions = selectedVersions.Where(each => each.ver <= (FourPartVersion)maximumVersion);
                }

                var results = (providerOption == PackageManagementService.ProviderOption.AllProvider) ?
                              selectedVersions.Select(version => Path.Combine(version.folder, Path.GetFileName(Path.GetFileName(module)) + ".psd1")).Where(File.Exists) :
                              new[] {
                    selectedVersions.OrderByDescending(each => each.ver)
                    .Select(version => Path.Combine(version.folder, Path.GetFileName(Path.GetFileName(module)) + ".psd1"))
                    .FirstOrDefault(File.Exists)
                };

                foreach (var result in results.WhereNotNull())
                {
                    yield return(result);
                }
            }
        }
 public BackgroundFolder(BaseFolder rootFolder) : base("Background", rootFolder)
 {
     Customs   = new CustomBackgroundFolder(this);
     Standards = new StandardBackgroundFolder(this);
 }
 public SmallDefaultSizeFolder(BaseFolder rootFolder) : base("Small", rootFolder)
 {
     Size = new Size {
         Height = 100, Width = 100
     };
 }
 public LargeDefaultSizeFolder(BaseFolder rootFolder) : base("Large", rootFolder)
 {
     Size = new Size {
         Height = 600, Width = 600
     };
 }
 public StandardBackgroundFolder(BaseFolder rootFolder) : base("Standard", rootFolder)
 {
 }
Example #28
0
 public async Task <StorageFile> CreateDatabaseAsync()
 {
     return(await BaseFolder.CreateFileAsync("zodream.db", CreationCollisionOption.OpenIfExists));
 }
 public MobileBackgroundSizeFolder(BaseFolder rootFolder) : base("Mobile", rootFolder)
 {
     Size = new Size {
         Height = 200, Width = 512
     };
 }