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
+
+
+