summary refs log tree commit diff
path: root/cdn/src/util/S3Storage.ts
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-08-22 22:18:59 +1000
committerMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-08-22 22:18:59 +1000
commit0cd9a46eea260c299db2e2983f7214ab8b119d29 (patch)
tree5fbb98e7adcfeab81594732089474afdde5893f9 /cdn/src/util/S3Storage.ts
parentMerge branch 'master' into feat/captchaVerify (diff)
parentMerge remote-tracking branch 'Puyodead1/patch/prettier-config' into staging (diff)
downloadserver-0cd9a46eea260c299db2e2983f7214ab8b119d29.tar.xz
Merge remote-tracking branch 'upstream/staging' into feat/captchaVerify
Diffstat (limited to 'cdn/src/util/S3Storage.ts')
-rw-r--r--cdn/src/util/S3Storage.ts60
1 files changed, 0 insertions, 60 deletions
diff --git a/cdn/src/util/S3Storage.ts b/cdn/src/util/S3Storage.ts
deleted file mode 100644

index c4066817..00000000 --- a/cdn/src/util/S3Storage.ts +++ /dev/null
@@ -1,60 +0,0 @@ -import { S3 } from "@aws-sdk/client-s3"; -import { Readable } from "stream"; -import { Storage } from "./Storage"; - -const readableToBuffer = (readable: Readable): Promise<Buffer> => - new Promise((resolve, reject) => { - const chunks: Buffer[] = []; - readable.on("data", (chunk) => chunks.push(chunk)); - readable.on("error", reject); - readable.on("end", () => resolve(Buffer.concat(chunks))); - }); - -export class S3Storage implements Storage { - public constructor( - private client: S3, - 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.bucketBasePath}${path}`, - Body: data, - }); - } - - async get(path: string): Promise<Buffer | null> { - try { - const s3Object = await this.client.getObject({ - Bucket: this.bucket, - Key: `${this.bucketBasePath ?? ""}${path}`, - }); - - if (!s3Object.Body) return null; - - const body = s3Object.Body; - - return await readableToBuffer(<Readable>body); - } catch (err) { - console.error(`[CDN] Unable to get S3 object at path ${path}.`); - console.error(err); - return null; - } - } - - async delete(path: string): Promise<void> { - await this.client.deleteObject({ - Bucket: this.bucket, - Key: `${this.bucketBasePath}${path}`, - }); - } -}