1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-11-11 13:14:06 +01:00

fix: don't set location by default

This commit is contained in:
Hayden Young 2021-10-14 23:15:03 +01:00
parent ef157c9aa7
commit 0e5172bc5f
2 changed files with 15 additions and 8 deletions

View File

@ -13,14 +13,21 @@ const readableToBuffer = (readable: Readable): Promise<Buffer> =>
export class S3Storage implements Storage { export class S3Storage implements Storage {
public constructor( public constructor(
private client: S3, private client: S3,
private basePath: string, private bucket: string,
private bucket: string private basePath?: string,
) {} ) {}
/**
* Always return a string, to ensure consistency.
*/
get bucketBasePath() {
return this.basePath ?? '';
}
async set(path: string, data: Buffer): Promise<void> { async set(path: string, data: Buffer): Promise<void> {
await this.client.putObject({ await this.client.putObject({
Bucket: this.bucket, Bucket: this.bucket,
Key: `${this.basePath}${path}`, Key: `${this.bucketBasePath}${path}`,
Body: data Body: data
}); });
} }
@ -29,7 +36,7 @@ export class S3Storage implements Storage {
try { try {
const s3Object = await this.client.getObject({ const s3Object = await this.client.getObject({
Bucket: this.bucket, Bucket: this.bucket,
Key: `${this.basePath}${path}` Key: `${this.bucketBasePath ?? ''}${path}`
}); });
if (!s3Object.Body) return null; if (!s3Object.Body) return null;
@ -47,7 +54,7 @@ export class S3Storage implements Storage {
async delete(path: string): Promise<void> { async delete(path: string): Promise<void> {
await this.client.deleteObject({ await this.client.deleteObject({
Bucket: this.bucket, Bucket: this.bucket,
Key: `${this.basePath}${path}` Key: `${this.bucketBasePath}${path}`
}); });
} }
} }

View File

@ -45,13 +45,13 @@ if (process.env.STORAGE_PROVIDER === "file" || !process.env.STORAGE_PROVIDER) {
let location = process.env.STORAGE_LOCATION; let location = process.env.STORAGE_LOCATION;
if (!location) { if (!location) {
console.warn(`[CDN] STORAGE_LOCATION unconfigured for S3 provider, defaulting to '/'...`); console.warn(`[CDN] STORAGE_LOCATION unconfigured for S3 provider, defaulting to the bucket root...`);
location = "/"; location = undefined;
} }
const client = new S3({ region }); const client = new S3({ region });
storage = new S3Storage(client, location, bucket); storage = new S3Storage(client, bucket, location);
} }
export { storage }; export { storage };