57 lines
2.1 KiB
C#
57 lines
2.1 KiB
C#
using Minio;
|
|
using Minio.DataModel.Args;
|
|
using MySqlConnector;
|
|
using skyscraper5.Data;
|
|
using skyscraper5.Data.MySql;
|
|
using skyscraper5.Skyscraper.Scraper.Storage;
|
|
using skyscraper5.Skyscraper.Scraper.Storage.Split;
|
|
|
|
namespace skyscraper5.Storage.MariaDbMinio
|
|
{
|
|
[ScrapeStorageFactoryId(2,"MariaDB & MinIO",false)]
|
|
public class MariaDbMinioStorageFactory : IScraperStorageFactory
|
|
{
|
|
public IScraperStroage CreateScraperStroage()
|
|
{
|
|
MySqlConnectionStringBuilder mcsb = new MySqlConnectionStringBuilder();
|
|
mcsb.Database = MariaDbDatabase;
|
|
mcsb.Password = MariaDbPassword;
|
|
mcsb.Port = MariaDbPort;
|
|
mcsb.Server = MariaDbHost;
|
|
mcsb.UserID = MariaDbUsername;
|
|
mcsb.ApplicationName = "skyscraper5";
|
|
mcsb.Pooling = true;
|
|
|
|
IMinioClient mc = new MinioClient()
|
|
.WithEndpoint(MinioEndpoint)
|
|
.WithCredentials(MinioAccessKey, MinioSecretKey)
|
|
.WithSSL(MinioSecure).Build();
|
|
BucketExistsArgs bucketExistsArgs = new BucketExistsArgs().WithBucket(MinioBucket);
|
|
bool bucketExists = mc.BucketExistsAsync(bucketExistsArgs).Result;
|
|
if (!bucketExists)
|
|
{
|
|
MakeBucketArgs makeBucketArgs = new MakeBucketArgs().WithBucket(MinioBucket);
|
|
mc.MakeBucketAsync(makeBucketArgs).Wait();
|
|
}
|
|
|
|
MySqlDataStorage myds = new MySqlDataStorage(mcsb);
|
|
|
|
MinioObjectStorage mos = new MinioObjectStorage(mc, MinioBucket);
|
|
|
|
return new SplitScraperStorage(myds, mos);
|
|
}
|
|
|
|
|
|
public string MariaDbHost { get; set; }
|
|
public ushort MariaDbPort { get; set; }
|
|
public string MariaDbUsername { get; set; }
|
|
public string MariaDbPassword { get; set; }
|
|
public string MariaDbDatabase { get; set; }
|
|
public string MinioEndpoint { get; set; }
|
|
public string MinioAccessKey { get; set; }
|
|
public string MinioSecretKey { get; set; }
|
|
public bool MinioSecure { get; set; }
|
|
public string MinioBucket { get; set; }
|
|
}
|
|
}
|