summary refs log tree commit diff
path: root/cdn/src
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
commit3c7b8da9a88df75bbb4f6e63830d63148e543bc6 (patch)
treeb5cd5f0ef30e775d68cdf697154dc18313cd0b6a /cdn/src
parentchore: remove unused import (diff)
downloadserver-3c7b8da9a88df75bbb4f6e63830d63148e543bc6.tar.xz
fix: don't set location by default
Diffstat (limited to 'cdn/src')
-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 };