Write Options.
This commit is contained in:
		
							parent
							
								
									21cb1d11bf
								
							
						
					
					
						commit
						f7bfdc18e8
					
				@ -146,40 +146,28 @@ namespace PoweredSoft.Storage.Azure.Blob
 | 
				
			|||||||
            return ret;
 | 
					            return ret;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async Task<IFileInfo> WriteFileAsync(string sourcePath, string path, bool overrideIfExists = true)
 | 
					        public Task<IFileInfo> WriteFileAsync(string sourcePath, string path, bool overrideIfExists = true)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (!overrideIfExists && await FileExistsAsync(path))
 | 
					            return WriteFileAsync(sourcePath, path, new DefaultWriteOptions
 | 
				
			||||||
                throw new FileAlreadyExistsException(path);
 | 
					            {
 | 
				
			||||||
 | 
					                OverrideIfExists = overrideIfExists
 | 
				
			||||||
            var container = GetContainer();
 | 
					            });
 | 
				
			||||||
            var blob = container.GetBlockBlobReference(path);
 | 
					 | 
				
			||||||
            await blob.UploadFromFileAsync(sourcePath);
 | 
					 | 
				
			||||||
            return new AzureBlobFileInfo(blob);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async Task<IFileInfo> WriteFileAsync(byte[] bytes, string path, bool overrideIfExists = true)
 | 
					        public Task<IFileInfo> WriteFileAsync(byte[] bytes, string path, bool overrideIfExists = true)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (!overrideIfExists && await FileExistsAsync(path))
 | 
					            return WriteFileAsync(bytes, path, new DefaultWriteOptions
 | 
				
			||||||
                throw new FileAlreadyExistsException(path);
 | 
					            {
 | 
				
			||||||
 | 
					                OverrideIfExists = overrideIfExists
 | 
				
			||||||
            var container = GetContainer();
 | 
					            });
 | 
				
			||||||
            var blob = container.GetBlockBlobReference(path);
 | 
					 | 
				
			||||||
            await blob.UploadFromByteArrayAsync(bytes, 0, bytes.Length);
 | 
					 | 
				
			||||||
            return new AzureBlobFileInfo(blob);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async Task<IFileInfo> WriteFileAsync(Stream stream, string path, bool overrideIfExists = true)
 | 
					        public Task<IFileInfo> WriteFileAsync(Stream stream, string path, bool overrideIfExists = true)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (!overrideIfExists && await FileExistsAsync(path))
 | 
					            return WriteFileAsync(stream, path, new DefaultWriteOptions
 | 
				
			||||||
                throw new FileAlreadyExistsException(path);
 | 
					            {
 | 
				
			||||||
 | 
					                OverrideIfExists = overrideIfExists
 | 
				
			||||||
            if (stream.CanSeek && stream.Position != 0)
 | 
					            });
 | 
				
			||||||
                stream.Seek(0, SeekOrigin.Begin);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            var container = GetContainer();
 | 
					 | 
				
			||||||
            var blob = container.GetBlockBlobReference(path);
 | 
					 | 
				
			||||||
            await blob.UploadFromStreamAsync(stream);
 | 
					 | 
				
			||||||
            return new AzureBlobFileInfo(blob);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async Task<Stream> GetFileStreamAsync(string path)
 | 
					        public async Task<Stream> GetFileStreamAsync(string path)
 | 
				
			||||||
@ -222,5 +210,56 @@ namespace PoweredSoft.Storage.Azure.Blob
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            return key;
 | 
					            return key;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public async Task<IFileInfo> WriteFileAsync(string sourcePath, string path, IWriteFileOptions options)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (options is null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                throw new ArgumentNullException(nameof(options));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!options.OverrideIfExists && await FileExistsAsync(path))
 | 
				
			||||||
 | 
					                throw new FileAlreadyExistsException(path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var container = GetContainer();
 | 
				
			||||||
 | 
					            var blob = container.GetBlockBlobReference(path);
 | 
				
			||||||
 | 
					            await blob.UploadFromFileAsync(sourcePath);
 | 
				
			||||||
 | 
					            return new AzureBlobFileInfo(blob);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public async Task<IFileInfo> WriteFileAsync(byte[] bytes, string path, IWriteFileOptions options)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (options is null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                throw new ArgumentNullException(nameof(options));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!options.OverrideIfExists && await FileExistsAsync(path))
 | 
				
			||||||
 | 
					                throw new FileAlreadyExistsException(path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var container = GetContainer();
 | 
				
			||||||
 | 
					            var blob = container.GetBlockBlobReference(path);
 | 
				
			||||||
 | 
					            await blob.UploadFromByteArrayAsync(bytes, 0, bytes.Length);
 | 
				
			||||||
 | 
					            return new AzureBlobFileInfo(blob);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public async Task<IFileInfo> WriteFileAsync(Stream stream, string path, IWriteFileOptions options)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (options is null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                throw new ArgumentNullException(nameof(options));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!options.OverrideIfExists && await FileExistsAsync(path))
 | 
				
			||||||
 | 
					                throw new FileAlreadyExistsException(path);
 | 
				
			||||||
 | 
					         
 | 
				
			||||||
 | 
					            if (stream.CanSeek && stream.Position != 0)
 | 
				
			||||||
 | 
					                stream.Seek(0, SeekOrigin.Begin);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var container = GetContainer();
 | 
				
			||||||
 | 
					            var blob = container.GetBlockBlobReference(path);
 | 
				
			||||||
 | 
					            await blob.UploadFromStreamAsync(stream);
 | 
				
			||||||
 | 
					            return new AzureBlobFileInfo(blob);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -5,6 +5,7 @@ using System.Threading.Tasks;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace PoweredSoft.Storage.Core
 | 
					namespace PoweredSoft.Storage.Core
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public interface IStorageProvider
 | 
					    public interface IStorageProvider
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        Task<List<IDirectoryOrFile>> GetListAsync(string path);
 | 
					        Task<List<IDirectoryOrFile>> GetListAsync(string path);
 | 
				
			||||||
@ -13,6 +14,9 @@ namespace PoweredSoft.Storage.Core
 | 
				
			|||||||
        Task<IFileInfo> WriteFileAsync(string sourcePath, string path, bool overrideIfExists = true);
 | 
					        Task<IFileInfo> WriteFileAsync(string sourcePath, string path, bool overrideIfExists = true);
 | 
				
			||||||
        Task<IFileInfo> WriteFileAsync(byte[] bytes, string path, bool overrideIfExists = true);
 | 
					        Task<IFileInfo> WriteFileAsync(byte[] bytes, string path, bool overrideIfExists = true);
 | 
				
			||||||
        Task<IFileInfo> WriteFileAsync(Stream stream, string path, bool overrideIfExists = true);
 | 
					        Task<IFileInfo> WriteFileAsync(Stream stream, string path, bool overrideIfExists = true);
 | 
				
			||||||
 | 
					        Task<IFileInfo> WriteFileAsync(string sourcePath, string path, IWriteFileOptions options);
 | 
				
			||||||
 | 
					        Task<IFileInfo> WriteFileAsync(byte[] bytes, string path, IWriteFileOptions options);
 | 
				
			||||||
 | 
					        Task<IFileInfo> WriteFileAsync(Stream stream, string path, IWriteFileOptions options);
 | 
				
			||||||
        Task<Stream> GetFileStreamAsync(string path);
 | 
					        Task<Stream> GetFileStreamAsync(string path);
 | 
				
			||||||
        Task<byte[]> GetFileBytesAsync(string path);
 | 
					        Task<byte[]> GetFileBytesAsync(string path);
 | 
				
			||||||
        Task<string> GetFileContentAsync(string path, Encoding encoding);
 | 
					        Task<string> GetFileContentAsync(string path, Encoding encoding);
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										12
									
								
								PoweredSoft.Storage.Core/IWriteFileOptions.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								PoweredSoft.Storage.Core/IWriteFileOptions.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					namespace PoweredSoft.Storage.Core
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public interface IWriteFileOptions
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        bool OverrideIfExists { get; }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public class DefaultWriteOptions : IWriteFileOptions
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public bool OverrideIfExists { get; set; }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -92,22 +92,33 @@ namespace PoweredSoft.Storage.Physical
 | 
				
			|||||||
            return result;
 | 
					            return result;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async Task<IFileInfo> WriteFileAsync(string sourcePath, string path, bool overrideIfExists = true)
 | 
					        public async Task<IFileInfo> WriteFileAsync(string sourcePath, string path, IWriteFileOptions options)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (!overrideIfExists && await FileExistsAsync(path))
 | 
					            if (options is null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                throw new ArgumentNullException(nameof(options));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!options.OverrideIfExists && await FileExistsAsync(path))
 | 
				
			||||||
                throw new FileAlreadyExistsException(path);
 | 
					                throw new FileAlreadyExistsException(path);
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            CreateDirectoryIfNotExisting(path);
 | 
					            CreateDirectoryIfNotExisting(path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            System.IO.File.Copy(sourcePath, path, overrideIfExists);
 | 
					            System.IO.File.Copy(sourcePath, path, options.OverrideIfExists);
 | 
				
			||||||
            var fileInfo = new FileInfo(path);
 | 
					            var fileInfo = new FileInfo(path);
 | 
				
			||||||
            var ret = new PhysicalFileInfo(fileInfo);
 | 
					            var ret = new PhysicalFileInfo(fileInfo);
 | 
				
			||||||
            return ret;
 | 
					            return ret;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async Task<IFileInfo> WriteFileAsync(byte[] bytes, string path, bool overrideIfExists = true)
 | 
					        public async Task<IFileInfo> WriteFileAsync(byte[] bytes, string path, IWriteFileOptions options)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (!overrideIfExists && await FileExistsAsync(path))
 | 
					            if (options is null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                throw new ArgumentNullException(nameof(options));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!options.OverrideIfExists && await FileExistsAsync(path))
 | 
				
			||||||
                throw new FileAlreadyExistsException(path);
 | 
					                throw new FileAlreadyExistsException(path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            CreateDirectoryIfNotExisting(path);
 | 
					            CreateDirectoryIfNotExisting(path);
 | 
				
			||||||
@ -118,9 +129,14 @@ namespace PoweredSoft.Storage.Physical
 | 
				
			|||||||
            return physicalinfo;
 | 
					            return physicalinfo;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async Task<IFileInfo> WriteFileAsync(Stream stream, string path, bool overrideIfExists = true)
 | 
					        public async Task<IFileInfo> WriteFileAsync(Stream stream, string path, IWriteFileOptions options)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (!overrideIfExists && await FileExistsAsync(path))
 | 
					            if (options is null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                throw new ArgumentNullException(nameof(options));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!options.OverrideIfExists && await FileExistsAsync(path))
 | 
				
			||||||
                throw new FileAlreadyExistsException(path);
 | 
					                throw new FileAlreadyExistsException(path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            CreateDirectoryIfNotExisting(path);
 | 
					            CreateDirectoryIfNotExisting(path);
 | 
				
			||||||
@ -155,5 +171,29 @@ namespace PoweredSoft.Storage.Physical
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            return key;
 | 
					            return key;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Task<IFileInfo> WriteFileAsync(string sourcePath, string path, bool overrideIfExists = true)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return WriteFileAsync(sourcePath, path, new DefaultWriteOptions
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                OverrideIfExists = overrideIfExists
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Task<IFileInfo> WriteFileAsync(byte[] bytes, string path, bool overrideIfExists = true)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return WriteFileAsync(bytes, path, new DefaultWriteOptions
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                OverrideIfExists = overrideIfExists
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Task<IFileInfo> WriteFileAsync(Stream stream, string path, bool overrideIfExists = true)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return WriteFileAsync(stream, path, new DefaultWriteOptions
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                OverrideIfExists = overrideIfExists
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										17
									
								
								PoweredSoft.Storage.S3/IS3FileWriteOptions.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								PoweredSoft.Storage.S3/IS3FileWriteOptions.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					using PoweredSoft.Storage.Core;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace PoweredSoft.Storage.S3
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public interface IS3FileWriteOptions
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public string Acl { get; }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public class S3FileWriteOptions : DefaultWriteOptions, IS3FileWriteOptions
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public string Acl { get; set; }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -177,22 +177,25 @@ namespace PoweredSoft.Storage.S3
 | 
				
			|||||||
            return files.Cast<IDirectoryOrFile>().ToList();
 | 
					            return files.Cast<IDirectoryOrFile>().ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async Task<IFileInfo> WriteFileAsync(string sourcePath, string path, bool overrideIfExists = true)
 | 
					        public async Task<IFileInfo> WriteFileAsync(string sourcePath, string path, IWriteFileOptions options)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            using var client = GetClient();
 | 
					            using var fileStream = new FileStream(sourcePath, FileMode.Open, FileAccess.Read);
 | 
				
			||||||
            await client.UploadObjectFromFilePathAsync(this.bucketName, path, sourcePath, null);
 | 
					            return await WriteFileAsync(fileStream, path, options);
 | 
				
			||||||
            var file = await GetFileInfoByPath(path);
 | 
					 | 
				
			||||||
            return file;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Task<IFileInfo> WriteFileAsync(byte[] bytes, string path, bool overrideIfExists = true)
 | 
					        public Task<IFileInfo> WriteFileAsync(byte[] bytes, string path, IWriteFileOptions options)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            return WriteFileAsync(new MemoryStream(bytes), path, overrideIfExists: overrideIfExists);
 | 
					            return WriteFileAsync(new MemoryStream(bytes), path, options);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async Task<IFileInfo> WriteFileAsync(Stream stream, string path, bool overrideIfExists = true)
 | 
					        public async Task<IFileInfo> WriteFileAsync(Stream stream, string path, IWriteFileOptions options)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (!overrideIfExists && await FileExistsAsync(path))
 | 
					            if (options is null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                throw new ArgumentNullException(nameof(options));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!options.OverrideIfExists && await FileExistsAsync(path))
 | 
				
			||||||
                throw new FileAlreadyExistsException(path);
 | 
					                throw new FileAlreadyExistsException(path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            using var client = GetClient();
 | 
					            using var client = GetClient();
 | 
				
			||||||
@ -203,6 +206,12 @@ namespace PoweredSoft.Storage.S3
 | 
				
			|||||||
                Key = path
 | 
					                Key = path
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (options is IS3FileWriteOptions s3FileWriteOptions)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (s3FileWriteOptions.Acl != null)
 | 
				
			||||||
 | 
					                    request.CannedACL = new S3CannedACL(s3FileWriteOptions.Acl);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var result = await client.PutObjectAsync(request);
 | 
					            var result = await client.PutObjectAsync(request);
 | 
				
			||||||
            var file = await GetFileInfoByPath(path);
 | 
					            var file = await GetFileInfoByPath(path);
 | 
				
			||||||
            return file;
 | 
					            return file;
 | 
				
			||||||
@ -246,5 +255,29 @@ namespace PoweredSoft.Storage.S3
 | 
				
			|||||||
            var hasMatches = regex.IsMatch(fileName);
 | 
					            var hasMatches = regex.IsMatch(fileName);
 | 
				
			||||||
            return false == hasMatches;
 | 
					            return false == hasMatches;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Task<IFileInfo> WriteFileAsync(string sourcePath, string path, bool overrideIfExists = true)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return WriteFileAsync(sourcePath, path, new DefaultWriteOptions
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                OverrideIfExists = overrideIfExists
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Task<IFileInfo> WriteFileAsync(byte[] bytes, string path, bool overrideIfExists = true)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return WriteFileAsync(bytes, path, new DefaultWriteOptions
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                OverrideIfExists = overrideIfExists
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Task<IFileInfo> WriteFileAsync(Stream stream, string path, bool overrideIfExists = true)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return WriteFileAsync(stream, path, new DefaultWriteOptions
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                OverrideIfExists = overrideIfExists
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,11 +1,23 @@
 | 
				
			|||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
 | 
					using Microsoft.VisualStudio.TestTools.UnitTesting;
 | 
				
			||||||
using PoweredSoft.Storage.S3;
 | 
					using PoweredSoft.Storage.S3;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace PoweredSoft.Storage.Test
 | 
					namespace PoweredSoft.Storage.Test
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [TestClass]
 | 
					    [TestClass]
 | 
				
			||||||
    public class S3Tests
 | 
					    public class S3Tests
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        [TestMethod]
 | 
				
			||||||
 | 
					        public async System.Threading.Tasks.Task S3AclWriteAsync()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var space = GetMockS3Space();
 | 
				
			||||||
 | 
					            await space.WriteFileAsync(Encoding.UTF8.GetBytes("Hello World"), "hello-world.txt", new S3FileWriteOptions
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Acl = "public-read",
 | 
				
			||||||
 | 
					                OverrideIfExists = true
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [TestMethod]
 | 
					        [TestMethod]
 | 
				
			||||||
        public void NameValidation()
 | 
					        public void NameValidation()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@ -33,9 +45,11 @@ namespace PoweredSoft.Storage.Test
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        private static S3StorageProvider GetMockS3Space()
 | 
					        private static S3StorageProvider GetMockS3Space()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var space = new S3StorageProvider("http://localhost:9000", "mybucket", "myminio", "myexample");
 | 
					            //var space = new S3StorageProvider("http://localhost:9000", "mybucket", "minioadmin", "minioadmin");
 | 
				
			||||||
            space.SetForcePathStyle(true);
 | 
					            //space.SetForcePathStyle(true);
 | 
				
			||||||
            space.SetS3UsEast1RegionalEndpointValue(Amazon.Runtime.S3UsEast1RegionalEndpointValue.Legacy);
 | 
					            //space.SetS3UsEast1RegionalEndpointValue(Amazon.Runtime.S3UsEast1RegionalEndpointValue.Legacy);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var space = new S3StorageProvider(" https://nyc3.digitaloceanspaces.com", "lveb-public", "42ZNGWW3EHQECLS7FCPT", "NKhVtWvAdUKRhoFN9QK7rsqnLarVaxpxIAwHJTCPrIA");
 | 
				
			||||||
            return space;
 | 
					            return space;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user