smarts3/ts/index.ts
2021-12-20 16:38:51 +01:00

56 lines
1.4 KiB
TypeScript

import * as plugins from './smarts3.plugins';
import * as paths from './paths';
export interface ISmarts3ContructorOptions {
port?: number;
cleanSlate?: boolean;
}
export class Smarts3 {
public options: ISmarts3ContructorOptions;
public dataForClient = {
s3AccessKey: 'S3RVER',
s3AccessSecret: 'S3RVER',
port: 3000,
useSsl: false
}
public s3Instance: plugins.s3rver;
constructor(optionsArg: ISmarts3ContructorOptions) {
this.options = optionsArg;
this.options = {
...this.options,
...optionsArg
}
}
public async start() {
if (this.options.cleanSlate) {
await plugins.smartfile.fs.ensureEmptyDir(paths.bucketsDir);
} else {
await plugins.smartfile.fs.ensureDir(paths.bucketsDir);
}
this.s3Instance = new plugins.s3rver({
port: this.options.port || 3000,
address: '0.0.0.0',
silent: false,
directory: paths.bucketsDir
})
await this.s3Instance.run();
console.log('s3 server is running');
}
public async getS3Descriptor(): Promise<plugins.smartbucket.ISmartBucketConfig> {
return {
accessKey: this.dataForClient.s3AccessKey,
accessSecret: this.dataForClient.s3AccessSecret,
endpoint: 'localhost',
port: this.dataForClient.port,
useSsl: this.dataForClient.useSsl,
}
}
public async stop() {
await this.s3Instance.close();
}
}