summary refs log tree commit diff
path: root/cdn/src/util/Storage.ts
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-10-15 13:32:26 +0200
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-10-15 13:32:26 +0200
commite1b991dfd14278b0c60163d92e4db0f18269b112 (patch)
treec9ed9bc8c7b00ded9207c9fcc9365e86d57fc146 /cdn/src/util/Storage.ts
parent:art: reformat (diff)
parent:bug: fix unittests (diff)
downloadserver-e1b991dfd14278b0c60163d92e4db0f18269b112.tar.xz
Merge branch 'master' into sticker
Diffstat (limited to 'cdn/src/util/Storage.ts')
-rw-r--r--cdn/src/util/Storage.ts32
1 files changed, 30 insertions, 2 deletions
diff --git a/cdn/src/util/Storage.ts b/cdn/src/util/Storage.ts

index 91f841a6..3332f21c 100644 --- a/cdn/src/util/Storage.ts +++ b/cdn/src/util/Storage.ts
@@ -2,6 +2,8 @@ import { FileStorage } from "./FileStorage"; import path from "path"; import fse from "fs-extra"; import { bgCyan, black } from "nanocolors"; +import { S3 } from '@aws-sdk/client-s3'; +import { S3Storage } from "./S3Storage"; process.cwd(); export interface Storage { @@ -10,10 +12,10 @@ export interface Storage { delete(path: string): Promise<void>; } -var storage: Storage; +let storage: Storage; if (process.env.STORAGE_PROVIDER === "file" || !process.env.STORAGE_PROVIDER) { - var location = process.env.STORAGE_LOCATION; + let location = process.env.STORAGE_LOCATION; if (location) { location = path.resolve(location); } else { @@ -24,6 +26,32 @@ if (process.env.STORAGE_PROVIDER === "file" || !process.env.STORAGE_PROVIDER) { process.env.STORAGE_LOCATION = location; storage = new FileStorage(); +} else if (process.env.STORAGE_PROVIDER === "s3") { + const + region = process.env.STORAGE_REGION, + bucket = process.env.STORAGE_BUCKET; + + if (!region) { + console.error(`[CDN] You must provide a region when using the S3 storage provider.`); + process.exit(1); + } + + if (!bucket) { + console.error(`[CDN] You must provide a bucket when using the S3 storage provider.`); + process.exit(1); + } + + // in the S3 provider, this should be the root path in the bucket + let location = process.env.STORAGE_LOCATION; + + if (!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, bucket, location); } export { storage };