summary refs log tree commit diff
diff options
context:
space:
mode:
authorHayden Young <hi@hbjy.dev>2021-10-14 23:15:03 +0100
committerHayden Young <hi@hbjy.dev>2021-10-14 23:15:03 +0100
commit0e5172bc5f5c42b24a60b5d49e5e03812be6f9ac (patch)
tree1debf5930eca6bc1765e65fcebb4ec512995aa7c
parentchore: remove unused import (diff)
downloadserver-0e5172bc5f5c42b24a60b5d49e5e03812be6f9ac.tar.xz
fix: don't set location by default
-rw-r--r--cdn/src/util/S3Storage.ts17
-rw-r--r--cdn/src/util/Storage.ts6
2 files changed, 15 insertions, 8 deletions
diff --git a/cdn/src/util/S3Storage.ts b/cdn/src/util/S3Storage.ts

index 8c7f7813..df5bc19c 100644 --- a/cdn/src/util/S3Storage.ts +++ b/cdn/src/util/S3Storage.ts
@@ -13,14 +13,21 @@ const readableToBuffer = (readable: Readable): Promise<Buffer> => export class S3Storage implements Storage { public constructor( 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> { await this.client.putObject({ Bucket: this.bucket, - Key: `${this.basePath}${path}`, + Key: `${this.bucketBasePath}${path}`, Body: data }); } @@ -29,7 +36,7 @@ export class S3Storage implements Storage { try { const s3Object = await this.client.getObject({ Bucket: this.bucket, - Key: `${this.basePath}${path}` + Key: `${this.bucketBasePath ?? ''}${path}` }); if (!s3Object.Body) return null; @@ -47,7 +54,7 @@ export class S3Storage implements Storage { async delete(path: string): Promise<void> { await this.client.deleteObject({ Bucket: this.bucket, - Key: `${this.basePath}${path}` + Key: `${this.bucketBasePath}${path}` }); } } diff --git a/cdn/src/util/Storage.ts b/cdn/src/util/Storage.ts
index acef9df3..3332f21c 100644 --- a/cdn/src/util/Storage.ts +++ b/cdn/src/util/Storage.ts
@@ -45,13 +45,13 @@ if (process.env.STORAGE_PROVIDER === "file" || !process.env.STORAGE_PROVIDER) { let location = process.env.STORAGE_LOCATION; if (!location) { - console.warn(`[CDN] STORAGE_LOCATION unconfigured for S3 provider, defaulting to '/'...`); - location = "/"; + console.warn(`[CDN] STORAGE_LOCATION unconfigured for S3 provider, defaulting to the bucket root...`); + location = undefined; } const client = new S3({ region }); - storage = new S3Storage(client, location, bucket); + storage = new S3Storage(client, bucket, location); } export { storage };