MinIO .NET API samples
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

148 lines
5.3 KiB

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);
}
}
}
}