From 4d22d93e90b554b9980552def7418f066ad5cef0 Mon Sep 17 00:00:00 2001 From: "Alexander Nicholson 4584443+DragonStuff@users.noreply.github.com" <4584443+DragonStuff@users.noreply.github.com> Date: Wed, 20 Nov 2024 18:37:13 +0900 Subject: [PATCH] fix: enable non-access-key flows --- src/routes/api.ts | 10 ++++------ src/routes/views.ts | 11 ++++------- src/services/storage.ts | 17 +++++++++++------ 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/routes/api.ts b/src/routes/api.ts index 60bb042..0dac143 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -5,12 +5,10 @@ import { objectList } from "../templates/components/object_list.ts"; const apiRoutes = new Hono(); -const storageService = new StorageService( - Deno.env.get("S3_BUCKET") || "", - Deno.env.get("S3_REGION") || "", - Deno.env.get("AWS_ACCESS_KEY_ID") || "", - Deno.env.get("AWS_SECRET_ACCESS_KEY") || "", -); +const storageService = new StorageService({ + bucket: Deno.env.get("S3_BUCKET") || "", + region: Deno.env.get("S3_REGION") || "" +}); const searchService = new SearchService(storageService); diff --git a/src/routes/views.ts b/src/routes/views.ts index a343235..43616d6 100644 --- a/src/routes/views.ts +++ b/src/routes/views.ts @@ -4,16 +4,13 @@ import { browser } from "../templates/browser.ts"; import { layout } from "../templates/layout.ts"; import { objectList } from "../templates/components/object_list.ts"; import { pagination } from "../templates/components/pagination.ts"; -import { DOMParser } from "https://deno.land/x/deno_dom@v0.1.48/deno-dom-wasm.ts"; const viewRoutes = new Hono(); -const storageService = new StorageService( - Deno.env.get("S3_BUCKET") || "", - Deno.env.get("S3_REGION") || "", - Deno.env.get("AWS_ACCESS_KEY_ID") || "", - Deno.env.get("AWS_SECRET_ACCESS_KEY") || "", -); +const storageService = new StorageService({ + bucket: Deno.env.get("S3_BUCKET") || "", + region: Deno.env.get("S3_REGION") || "" +}); viewRoutes.get("/", async (c) => { const prefix = c.req.query("prefix") || ""; diff --git a/src/services/storage.ts b/src/services/storage.ts index 142db68..fd016a1 100644 --- a/src/services/storage.ts +++ b/src/services/storage.ts @@ -10,18 +10,23 @@ interface Credentials { sessionToken?: string; } +interface StorageServiceConfig { + bucket: string; + region: string; +} + export class StorageService { private client: S3; private credentials!: Credentials; - constructor(private bucket: string, private region: string) { + constructor(private config: StorageServiceConfig) { this.initializeClient(); } private async initializeClient() { this.credentials = await this.resolveCredentials(); const factory = new ApiFactory({ - region: this.region, + region: this.config.region, credentials: this.credentials, }); @@ -114,9 +119,9 @@ export class StorageService { return await getSignedUrl({ accessKeyId: this.credentials.awsAccessKeyId, secretAccessKey: this.credentials.awsSecretKey, - bucket: this.bucket, + bucket: this.config.bucket, key, - region: this.region, + region: this.config.region, expiresIn, }); } @@ -125,7 +130,7 @@ export class StorageService { await this.ensureInitialized(); try { const params: ListObjectsV2Request = { - Bucket: this.bucket, + Bucket: this.config.bucket, Prefix: options.prefix, Delimiter: options.delimiter, MaxKeys: options.maxKeys, @@ -163,7 +168,7 @@ export class StorageService { private async getContentType(key: string): Promise { try { const response = await this.client.headObject({ - Bucket: this.bucket, + Bucket: this.config.bucket, Key: key, }); return response.ContentType;