using CoviDok.BLL.Storage;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Minio;

namespace CoviDok.Data.StorageProviders
{
    public class MinioProvider : IStorageProvider
    {
        private readonly MinioClient Client = null;
        public MinioProvider(string Host, string AccessKey, string SecretKey)
        {
            Client = new MinioClient(Host, AccessKey, SecretKey);
        }
 
    public async Task CreateNamespace(string ns)
        {
            await Client.MakeBucketAsync(ns);
        }

        public async Task Download(string ns, string objectname, Action<Stream> callback)
        {
            await Client.GetObjectAsync(ns, objectname, callback);
        }

        public async Task<bool> NamespaceExists(string ns)
        {
            return await Client.BucketExistsAsync(ns);
        }

        public async Task Upload(string ns, string objectname, Stream data, long size)
        {
            await Client.PutObjectAsync(ns, objectname, data, size);
        }
    }
}