diff --git a/n4-minio-demo/ListBuckets.cs b/n4-minio-demo/ListBuckets.cs deleted file mode 100644 index c317e43..0000000 --- a/n4-minio-demo/ListBuckets.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace n4_minio_demo -{ - public class ListBuckets - { - public ListBuckets() - { - } - } -} - diff --git a/n4-minio-demo/Program.cs b/n4-minio-demo/Program.cs index 3ed0e5d..2260aeb 100644 --- a/n4-minio-demo/Program.cs +++ b/n4-minio-demo/Program.cs @@ -1,3 +1,148 @@ -// See https://aka.ms/new-console-template for more information -Console.WriteLine("Hello, World!"); + +using System.Security.AccessControl; +using Minio; +using Minio.DataModel; +using Minio.Exceptions; +namespace n4_minio_demo +{ + class Program + { + static void Main(string[] args) + { + var endpoint = "storage.nube4.cloud"; + var endpointPort = 9443; + var accessKey = "Wudugi31qqyHTCYPp7ek"; + var secretKey = "UoujxNjCkd1XEqpf1RsP4oxWgFox9IV9zBmOPv38"; + var secure = true; + + // Initialize the client with access credentials... + MinioClient minio = new MinioClient() + .WithEndpoint(endpoint, endpointPort) + .WithCredentials(accessKey, secretKey) + .WithSSL(secure) + .Build(); + + // Get the bucket list... + Program.GetBucketList(minio).Wait(); + + // Upload file using a preffix to set a tag vaue... + Program.UploadFile(minio).Wait(); + + // Search for a file uploaded using a preffix... + Program.ListFile(minio); + + // Download file... + Program.DownloadFile(minio).Wait(); + } + + private async static Task GetBucketList(MinioClient minio) + { + Console.WriteLine("Listing buckets..."); + + // Create an async tsk for listing buckets... + var getListBucketsTask = await minio.ListBucketsAsync().ConfigureAwait(false); + + // Iterate over the list of buckets... + foreach (var bucket in getListBucketsTask.Buckets) + { + Console.WriteLine(bucket.Name + " " + bucket.CreationDateDateTime); + } + } + + private async static Task UploadFile(MinioClient minio) + { + Console.WriteLine("Upload file..."); + var fileId = "a44d2f66-5c18-11ee-8c99-0242ac120002"; + var bucketName = "test"; + var objectName = fileId + "/axeso-site.pdf"; + var filePath = "/Users/mabcastillo/Downloads/axeso-site.pdf"; + var contentType = "application/pdf"; + try + { + // Upload a file to bucket... + var putObjectArgs = new PutObjectArgs() + .WithBucket(bucketName) + .WithObject(objectName) + .WithFileName(filePath) + .WithContentType(contentType); + await minio.PutObjectAsync(putObjectArgs).ConfigureAwait(false); + Console.WriteLine("Successfully uploaded " + objectName); + } + catch (MinioException e) + { + Console.WriteLine("File Upload Error: {0}", e.Message); + } + } + + private static Item GetObjectByPrefix(MinioClient minio, string bucketName, string prefix) + { + // Some value initialization... + Item selectedItem = null; + + try + { + var listArgs = new ListObjectsArgs() + .WithBucket(bucketName) + .WithPrefix(prefix) + .WithRecursive(true); + var observable = minio.ListObjectsAsync(listArgs); + var subscription = observable.Subscribe( + item => selectedItem = item, + ex => Console.WriteLine("OnError: {0}", ex.Message), + () => Console.WriteLine("End listing objects")); + + while(true) + { + if (selectedItem != null) + { + return selectedItem; + } + else + { + System.Threading.Thread.Sleep(200); + } + } + + } + catch (Exception e) + { + Console.WriteLine("GetObjectByPrefix error {0}", e.Message); + } + + return null; + } + + private static void ListFile(MinioClient minio) + { + Console.WriteLine("List objects..."); + var fileId = "a44d2f66-5c18-11ee-8c99-0242ac120002"; + var bucketName = "test"; + + Item selectedItem = GetObjectByPrefix(minio, bucketName, fileId); + Console.WriteLine("Item found {0} {1}", selectedItem.Key, selectedItem.LastModifiedDateTime); + } + + private async static Task DownloadFile(MinioClient minio) + { + var bucketName = "test"; + var objectName = "a44d2f66-5c18-11ee-8c99-0242ac120002/axeso-site.pdf"; + var fileName = "/Users/mabcastillo/Downloads/axeso-site-download.pdf"; + try + { + Console.WriteLine("Download file..."); + var args = new GetObjectArgs() + .WithBucket(bucketName) + .WithObject(objectName) + .WithFile(fileName); + var stat = await minio.GetObjectAsync(args).ConfigureAwait(false); + Console.WriteLine("Downloaded the file {0} in bucket {1}", fileName, bucketName); + Console.WriteLine("Stat details of object {0} in bucket {1} {2}", objectName, bucketName, stat); + } + catch (Exception e) + { + Console.WriteLine("Download File Error {0}", e.Message); + } + } + } +} diff --git a/n4-minio-demo/n4-minio-demo.csproj b/n4-minio-demo/n4-minio-demo.csproj index bffd519..dd0bd4f 100644 --- a/n4-minio-demo/n4-minio-demo.csproj +++ b/n4-minio-demo/n4-minio-demo.csproj @@ -8,4 +8,7 @@ enable + + +