aboutsummaryrefslogtreecommitdiff
path: root/services/docker/mail-server/relay/aws/context.ts
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-04-30 00:20:23 +0800
committerYuqian Yang <crupest@crupest.life>2025-05-16 13:31:35 +0800
commit0963e715a9de2970826cec80713730b26286381d (patch)
tree43357a0e948862b7803fe9d533bb62d2c9c8d059 /services/docker/mail-server/relay/aws/context.ts
parent8930bb11fce19c773201b4f499d99c1c3c28efa6 (diff)
downloadcrupest-0963e715a9de2970826cec80713730b26286381d.tar.gz
crupest-0963e715a9de2970826cec80713730b26286381d.tar.bz2
crupest-0963e715a9de2970826cec80713730b26286381d.zip
HALF WORK!: 2025-5-16 rename
Diffstat (limited to 'services/docker/mail-server/relay/aws/context.ts')
-rw-r--r--services/docker/mail-server/relay/aws/context.ts41
1 files changed, 41 insertions, 0 deletions
diff --git a/services/docker/mail-server/relay/aws/context.ts b/services/docker/mail-server/relay/aws/context.ts
new file mode 100644
index 0000000..65c8371
--- /dev/null
+++ b/services/docker/mail-server/relay/aws/context.ts
@@ -0,0 +1,41 @@
+import {
+ CopyObjectCommand,
+ DeleteObjectCommand,
+ S3Client,
+} from "@aws-sdk/client-s3";
+
+import { getConfig } from "../config.ts";
+
+export class AwsContext {
+ readonly region = "ap-southeast-1";
+
+ accessKeyId = getConfig().getValue("awsAccessKeyId");
+ secretAccessKey = getConfig().getValue("awsSecretAccessKey");
+
+ getCredentials() {
+ const { accessKeyId, secretAccessKey } = this;
+ return Promise.resolve({ accessKeyId, secretAccessKey });
+ }
+
+ readonly credentials = this.getCredentials.bind(this);
+}
+
+export async function s3MoveObject(
+ client: S3Client,
+ bucket: string,
+ path: string,
+ newPath: string,
+): Promise<void> {
+ const copyCommand = new CopyObjectCommand({
+ Bucket: bucket,
+ Key: newPath,
+ CopySource: path,
+ });
+ await client.send(copyCommand);
+
+ const deleteCommand = new DeleteObjectCommand({
+ Bucket: bucket,
+ Key: path,
+ });
+ await client.send(deleteCommand);
+}