46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
// classes.smartbucket.ts
|
|
|
|
import * as plugins from './plugins.js';
|
|
import { Bucket } from './classes.bucket.js';
|
|
|
|
export class SmartBucket {
|
|
public config: plugins.tsclass.storage.IS3Descriptor;
|
|
|
|
public s3Client: plugins.s3.S3Client;
|
|
|
|
/**
|
|
* the constructor of SmartBucket
|
|
*/
|
|
/**
|
|
* the constructor of SmartBucket
|
|
*/
|
|
constructor(configArg: plugins.tsclass.storage.IS3Descriptor) {
|
|
this.config = configArg;
|
|
const endpoint = this.config.endpoint.startsWith('http://') || this.config.endpoint.startsWith('https://')
|
|
? this.config.endpoint
|
|
: `https://${this.config.endpoint}`;
|
|
|
|
this.s3Client = new plugins.s3.S3Client({
|
|
endpoint,
|
|
region: this.config.region || 'us-east-1',
|
|
credentials: {
|
|
accessKeyId: this.config.accessKey,
|
|
secretAccessKey: this.config.accessSecret,
|
|
},
|
|
forcePathStyle: true, // Necessary for S3-compatible storage like MinIO or Wasabi
|
|
});
|
|
}
|
|
|
|
public async createBucket(bucketNameArg: string) {
|
|
const bucket = await Bucket.createBucketByName(this, bucketNameArg);
|
|
return bucket;
|
|
}
|
|
|
|
public async removeBucket(bucketName: string) {
|
|
await Bucket.removeBucketByName(this, bucketName);
|
|
}
|
|
|
|
public async getBucketByName(bucketName: string) {
|
|
return Bucket.getBucketByName(this, bucketName);
|
|
}
|
|
} |