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