public override IAsyncOperation <BaseStorageFile> CopyAsync(IStorageFolder destinationFolder, string desiredNewName, NameCollisionOption option) { return(AsyncInfo.Run(async(cancellationToken) => { using var ftpClient = new FtpClient(); ftpClient.Host = FtpHelpers.GetFtpHost(Path); ftpClient.Port = FtpHelpers.GetFtpPort(Path); ftpClient.Credentials = FtpManager.Credentials.Get(ftpClient.Host, FtpManager.Anonymous); if (!await ftpClient.EnsureConnectedAsync()) { return null; } BaseStorageFolder destFolder = destinationFolder.AsBaseStorageFolder(); BaseStorageFile file = await destFolder.CreateFileAsync(desiredNewName, option.Convert()); var stream = await file.OpenStreamForWriteAsync(); if (await ftpClient.DownloadAsync(stream, FtpPath, token: cancellationToken)) { return file; } return null; })); }
public static async Task <FilesystemResult <BaseStorageFile> > Create(this ShellNewEntry shellEntry, BaseStorageFolder parentFolder, string fileName) { FilesystemResult <BaseStorageFile> createdFile = null; if (!fileName.EndsWith(shellEntry.Extension)) { fileName += shellEntry.Extension; } if (shellEntry.Template == null) { createdFile = await FilesystemTasks.Wrap(() => parentFolder.CreateFileAsync(fileName, CreationCollisionOption.GenerateUniqueName).AsTask()); } else { createdFile = await FilesystemTasks.Wrap(() => StorageFileExtensions.DangerousGetFileFromPathAsync(shellEntry.Template)) .OnSuccess(t => t.CopyAsync(parentFolder, fileName, NameCollisionOption.GenerateUniqueName).AsTask()); } if (createdFile) { if (shellEntry.Data != null) { //await FileIO.WriteBytesAsync(createdFile.Result, this.Data); // Calls unsupported OpenTransactedWriteAsync using (var fileStream = await createdFile.Result.OpenStreamForWriteAsync()) { await fileStream.WriteAsync(shellEntry.Data, 0, shellEntry.Data.Length); await fileStream.FlushAsync(); } } } return(createdFile); }
public static async Task <FilesystemResult <BaseStorageFile> > Create(this ShellNewEntry shellEntry, BaseStorageFolder parentFolder, string filePath) { FilesystemResult <BaseStorageFile> createdFile = null; var fileName = Path.GetFileName(filePath); if (!fileName.EndsWith(shellEntry.Extension, StringComparison.Ordinal)) { fileName += shellEntry.Extension; } if (shellEntry.Command != null) { var args = CommandLine.CommandLineParser.SplitArguments(shellEntry.Command); if (args.Any()) { var connection = await AppServiceConnectionHelper.Instance; if (connection != null) { _ = await connection.SendMessageForResponseAsync(new ValueSet() { { "Arguments", "LaunchApp" }, { "WorkingDirectory", PathNormalization.GetParentDir(filePath) }, { "Application", args[0].Replace("\"", "", StringComparison.Ordinal) }, { "Parameters", string.Join(" ", args.Skip(1)).Replace("%1", filePath) } }); } } createdFile = new FilesystemResult <BaseStorageFile>(null, Shared.Enums.FileSystemStatusCode.Success); } else if (shellEntry.Template == null) { createdFile = await FilesystemTasks.Wrap(() => parentFolder.CreateFileAsync(fileName, CreationCollisionOption.GenerateUniqueName).AsTask()); } else { createdFile = await FilesystemTasks.Wrap(() => StorageFileExtensions.DangerousGetFileFromPathAsync(shellEntry.Template)) .OnSuccess(t => t.CopyAsync(parentFolder, fileName, NameCollisionOption.GenerateUniqueName).AsTask()); } if (createdFile) { if (shellEntry.Data != null) { //await FileIO.WriteBytesAsync(createdFile.Result, shellEntry.Data); // Calls unsupported OpenTransactedWriteAsync await createdFile.Result.WriteBytesAsync(shellEntry.Data); } } return(createdFile); }
public static async Task <FilesystemResult <BaseStorageFile> > Create(this ShellNewEntry shellEntry, BaseStorageFolder parentFolder, string filePath) { FilesystemResult <BaseStorageFile> createdFile = null; var fileName = Path.GetFileName(filePath); if (shellEntry.Template == null) { createdFile = await FilesystemTasks.Wrap(() => parentFolder.CreateFileAsync(fileName, CreationCollisionOption.GenerateUniqueName).AsTask()); } else { createdFile = await FilesystemTasks.Wrap(() => StorageFileExtensions.DangerousGetFileFromPathAsync(shellEntry.Template)) .OnSuccess(t => t.CopyAsync(parentFolder, fileName, NameCollisionOption.GenerateUniqueName).AsTask()); } if (createdFile) { if (shellEntry.Data != null) { //await FileIO.WriteBytesAsync(createdFile.Result, shellEntry.Data); // Calls unsupported OpenTransactedWriteAsync await createdFile.Result.WriteBytesAsync(shellEntry.Data); } } return(createdFile); }