public override async Task <Stream> OpenStreamAsync(IEntryModel entryModel,
                                                            FileExplorer.Defines.FileAccess access, CancellationToken ct)
        {
            //SevenZipWrapper wrapper = (Profile as SzsProfile).Wrapper;
            ISzsItemModel entryItemModel = entryModel as ISzsItemModel;

            //IEntryModel rootReferenceModel = itemModel.Root.ReferencedFile;
            //return new CompressMemoryStream(wrapper, rootReferenceModel, itemModel.RelativePath, access, ct);
            //To-DO: save to Profile.DiskIO.Mapper[itemModel].IOPath


            if (entryItemModel.Root.Equals(entryItemModel))
            {
                IEntryModel referencedFile = entryItemModel.Root.ReferencedFile;
                return(await(referencedFile.Profile as IDiskProfile).DiskIO.OpenStreamAsync(referencedFile, access, ct));
            }

            switch (access)
            {
            case FileExplorer.Defines.FileAccess.Read: return(await SzsFileStream.OpenReadAsync(entryModel, ct));

            case FileExplorer.Defines.FileAccess.Write: return(SzsFileStream.OpenWrite(entryModel));

            case FileExplorer.Defines.FileAccess.ReadWrite: return(await SzsFileStream.OpenReadWriteAsync(entryModel, ct));
            }
            throw new NotSupportedException();
        }
 public OpenStreamCommand(IEntryModel entryModel, FileExplorer.Defines.FileAccess access,
                          Func <IEntryModel, Stream, IScriptCommand> streamFunc, IScriptCommand thenCommand)
     : base("OpenStream", thenCommand)
 {
     if (!(entryModel.Profile is IDiskProfile))
     {
         throw new ArgumentException("Profile isnt IDiskProfile.");
     }
     _entryModel = entryModel;
     _access     = access;
     _streamFunc = streamFunc;
 }
        public override async Task <Stream> OpenStreamAsync(IEntryModel entryModel,
                                                            FileExplorer.Defines.FileAccess access, CancellationToken ct)
        {
            switch (access)
            {
            case FileExplorer.Defines.FileAccess.Read: return(await SkyDriveFileStream.OpenReadAsync(entryModel, ct));

            case FileExplorer.Defines.FileAccess.Write: return(SkyDriveFileStream.OpenWrite(entryModel));

            case FileExplorer.Defines.FileAccess.ReadWrite: return(await SkyDriveFileStream.OpenReadWriteAsync(entryModel, ct));
            }
            throw new NotSupportedException();
        }
Beispiel #4
0
        public override async Task <Stream> OpenStreamAsync(IEntryModel entryModel,
                                                            FileExplorer.Defines.FileAccess access, CancellationToken ct)
        {
            switch (access)
            {
            case FileExplorer.Defines.FileAccess.Read: return(File.OpenRead(entryModel.FullPath));

            case FileExplorer.Defines.FileAccess.Write: return(File.OpenWrite(entryModel.FullPath));

            case FileExplorer.Defines.FileAccess.ReadWrite: return(File.Open(entryModel.FullPath, FileMode.OpenOrCreate, FileAccess.ReadWrite));
            }
            throw new NotImplementedException();
        }
        public override async Task <Stream> OpenStreamAsync(IEntryModel entryModel,
                                                            FileExplorer.Defines.FileAccess access, CancellationToken ct)
        {
            switch (access)
            {
            case FileExplorer.Defines.FileAccess.Read: return(await GoogleDriveFileStream.OpenReadAsync(entryModel,
                                                                                                        () => (entryModel.Profile as GoogleDriveProfile).HttpClientFunc(), ct));

            case FileExplorer.Defines.FileAccess.Write: return(GoogleDriveFileStream.OpenWrite(entryModel, () => (entryModel.Profile as GoogleDriveProfile).HttpClientFunc()));

            case FileExplorer.Defines.FileAccess.ReadWrite: return(await GoogleDriveFileStream.OpenReadWriteAsync(entryModel,
                                                                                                                  () => (entryModel.Profile as GoogleDriveProfile).HttpClientFunc(), ct));
            }
            throw new NotSupportedException();
        }
 public virtual Task <Stream> OpenStreamAsync(IEntryModel entryModel,
                                              FileExplorer.Defines.FileAccess access, CancellationToken ct)
 {
     throw new NotImplementedException();
 }
 public static IScriptCommand OpenFileStream(IEntryModel entryModel, FileExplorer.Defines.FileAccess access,
                                             Func <IEntryModel, Stream, IScriptCommand> streamFunc, Func <IEntryModel, IScriptCommand> thenCommandFunc)
 {
     return(new OpenStreamCommand(entryModel, access, streamFunc, thenCommandFunc(entryModel)));
 }