S3 configuration for minio (#213)
* 🛠️S3 configuraiton for minio have to have strict types
This commit is contained in:
@@ -21,7 +21,7 @@ export class Configuration implements TdriveServiceConfiguration {
|
|||||||
if (name) {
|
if (name) {
|
||||||
value =
|
value =
|
||||||
this.serviceConfiguration &&
|
this.serviceConfiguration &&
|
||||||
(this.serviceConfiguration.get(name) || configuration.get(name));
|
(this.serviceConfiguration.get<T>(name) || configuration.get<T>(name));
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
value = defaultValue || null;
|
value = defaultValue || null;
|
||||||
|
|||||||
@@ -3,14 +3,22 @@ import { logger } from "../../../../../../core/platform/framework";
|
|||||||
import { Readable } from "stream";
|
import { Readable } from "stream";
|
||||||
import { StorageConnectorAPI, WriteMetadata } from "../../provider";
|
import { StorageConnectorAPI, WriteMetadata } from "../../provider";
|
||||||
|
|
||||||
export type S3Configuration = Minio.ClientOptions & { bucket: string };
|
export type S3Configuration = {
|
||||||
|
bucket: string;
|
||||||
|
region: string;
|
||||||
|
endPoint: string;
|
||||||
|
port: number;
|
||||||
|
useSSL: boolean;
|
||||||
|
accessKey: string;
|
||||||
|
secretKey: string;
|
||||||
|
};
|
||||||
|
|
||||||
export default class S3ConnectorService implements StorageConnectorAPI {
|
export default class S3ConnectorService implements StorageConnectorAPI {
|
||||||
client: Minio.Client;
|
client: Minio.Client;
|
||||||
minioConfiguration: S3Configuration;
|
minioConfiguration: S3Configuration;
|
||||||
|
|
||||||
constructor(S3Configuration: S3Configuration) {
|
constructor(S3Configuration: S3Configuration) {
|
||||||
this.client = new Minio.Client({ ...S3Configuration });
|
this.client = new Minio.Client(S3Configuration);
|
||||||
this.minioConfiguration = S3Configuration;
|
this.minioConfiguration = S3Configuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { Stream, Readable } from "stream";
|
|||||||
import Multistream from "multistream";
|
import Multistream from "multistream";
|
||||||
import { Consumes, logger, TdriveService } from "../../framework";
|
import { Consumes, logger, TdriveService } from "../../framework";
|
||||||
import LocalConnectorService, { LocalConfiguration } from "./connectors/local/service";
|
import LocalConnectorService, { LocalConfiguration } from "./connectors/local/service";
|
||||||
import S3ConnectorService, { S3Configuration } from "./connectors/S3/service";
|
import S3ConnectorService from "./connectors/S3/service";
|
||||||
import StorageAPI, {
|
import StorageAPI, {
|
||||||
DeleteOptions,
|
DeleteOptions,
|
||||||
ReadOptions,
|
ReadOptions,
|
||||||
@@ -37,7 +37,15 @@ export default class StorageService extends TdriveService<StorageAPI> implements
|
|||||||
const type = this.getConnectorType();
|
const type = this.getConnectorType();
|
||||||
if (type === "S3") {
|
if (type === "S3") {
|
||||||
logger.info("Using 'S3' connector for storage.");
|
logger.info("Using 'S3' connector for storage.");
|
||||||
return new S3ConnectorService(this.configuration.get<S3Configuration>("S3"));
|
return new S3ConnectorService({
|
||||||
|
bucket: this.configuration.get<string>("S3.bucket"),
|
||||||
|
region: this.configuration.get<string>("S3.region"),
|
||||||
|
endPoint: this.configuration.get<string>("S3.endPoint"),
|
||||||
|
port: Number(this.configuration.get<number>("S3.port")),
|
||||||
|
useSSL: Boolean(this.configuration.get<boolean>("S3.useSSL")),
|
||||||
|
accessKey: this.configuration.get<string>("S3.accessKey"),
|
||||||
|
secretKey: this.configuration.get<string>("S3.secretKey"),
|
||||||
|
});
|
||||||
}
|
}
|
||||||
logger.info(
|
logger.info(
|
||||||
`Using 'local' connector for storage${
|
`Using 'local' connector for storage${
|
||||||
|
|||||||
Reference in New Issue
Block a user