Files
smartbucket/ts/classes.smartbucket.ts

56 lines
1.7 KiB
TypeScript
Raw Normal View History

2024-06-17 16:01:35 +02:00
// classes.smartbucket.ts
2024-05-21 01:22:21 +02:00
import * as plugins from './plugins.js';
import { Bucket } from './classes.bucket.js';
import { normalizeStorageDescriptor } from './helpers.js';
2018-09-14 18:07:20 +02:00
export class SmartBucket {
public config: plugins.tsclass.storage.IStorageDescriptor;
2019-10-14 20:55:07 +02:00
public storageClient: plugins.s3.S3Client;
/** @deprecated Use storageClient instead */
public get s3Client(): plugins.s3.S3Client {
return this.storageClient;
}
2019-10-14 23:53:41 +02:00
2024-06-17 16:01:35 +02:00
/**
* the constructor of SmartBucket
*/
constructor(configArg: plugins.tsclass.storage.IStorageDescriptor) {
2018-09-14 18:07:20 +02:00
this.config = configArg;
2024-06-17 19:57:56 +02:00
// Use the normalizer to handle various endpoint formats
const { normalized } = normalizeStorageDescriptor(configArg);
2024-06-17 16:01:35 +02:00
this.storageClient = new plugins.s3.S3Client({
endpoint: normalized.endpointUrl,
region: normalized.region,
credentials: normalized.credentials,
forcePathStyle: normalized.forcePathStyle, // Necessary for S3-compatible storage like MinIO or Wasabi
2019-10-15 14:16:28 +02:00
});
2018-09-14 18:07:20 +02:00
}
2019-10-15 19:23:06 +02:00
public async createBucket(bucketNameArg: string) {
const bucket = await Bucket.createBucketByName(this, bucketNameArg);
return bucket;
2019-10-15 14:16:28 +02:00
}
public async removeBucket(bucketName: string) {
2019-10-15 19:23:06 +02:00
await Bucket.removeBucketByName(this, bucketName);
2019-10-15 14:16:28 +02:00
}
2019-10-14 23:53:41 +02:00
public async getBucketByName(bucketNameArg: string) {
return Bucket.getBucketByName(this, bucketNameArg);
}
/**
* Check if a bucket exists
*/
public async bucketExists(bucketNameArg: string): Promise<boolean> {
const command = new plugins.s3.ListBucketsCommand({});
const buckets = await this.storageClient.send(command);
return buckets.Buckets?.some(bucket => bucket.Name === bucketNameArg) ?? false;
2019-10-14 23:53:41 +02:00
}
2024-06-17 20:00:57 +02:00
}