Skip to content

Commit 4974373

Browse files
committed
refactor(s3): replace put with putObject
1 parent e4a18ab commit 4974373

File tree

4 files changed

+24
-44
lines changed

4 files changed

+24
-44
lines changed

src/attachments/attachments.service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,14 @@ export class AttachmentsService {
8888
ResourcePermission.CAN_EDIT,
8989
);
9090

91-
const { key, objectName } = await this.s3Service.generateObjectKey(
91+
const { objectKey, objectName } = await this.s3Service.generateObjectKey(
9292
'attachments',
9393
filename,
9494
);
9595
const metadata = {
9696
filename: encodeFileName(filename),
9797
};
98-
await this.s3Service.putObject(key, buffer, mimetype, metadata);
98+
await this.s3Service.putObject(objectKey, buffer, mimetype, metadata);
9999

100100
// Create the resource-attachment relation
101101
await this.resourceAttachmentsService.addAttachmentToResource(

src/feedback/feedback.controller.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,12 @@ export class FeedbackController {
5858

5959
if (image) {
6060
const originalname = encodeFileName(image.originalname);
61-
imageUrl = await this.s3Service.put(
61+
const { objectKey, objectName } = await this.s3Service.generateObjectKey(
62+
'feedback',
6263
originalname,
63-
image.buffer,
64-
image.mimetype,
65-
{ folder: 'feedback' },
6664
);
65+
await this.s3Service.putObject(objectKey, image.buffer, image.mimetype);
66+
imageUrl = objectName;
6767
}
6868

6969
const userAgent = request.get('User-Agent');

src/s3/s3.service.ts

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,7 @@ import {
1313
} from '@aws-sdk/client-s3';
1414
import { Readable } from 'stream';
1515
import generateId from 'omniboxd/utils/generate-id';
16-
import {
17-
encodeFileName,
18-
getOriginalFileName,
19-
} from 'omniboxd/utils/encode-filename';
20-
21-
export interface PutOptions {
22-
id?: string;
23-
metadata?: Record<string, string>;
24-
folder?: string;
25-
}
16+
import { getOriginalFileName } from 'omniboxd/utils/encode-filename';
2617

2718
export class ObjectMeta {
2819
constructor(
@@ -126,15 +117,15 @@ export class S3Service implements OnModuleInit {
126117
prefix: string,
127118
filename?: string,
128119
length: number = 32,
129-
): Promise<{ key: string; objectName: string }> {
120+
): Promise<{ objectKey: string; objectName: string }> {
130121
if (!prefix.endsWith('/')) {
131122
prefix += '/';
132123
}
133124
for (let i = 0; i < 5; i++) {
134125
const objectName = this.generateId(filename, length);
135-
const key = `${prefix}${objectName}`;
136-
if ((await this.headObject(key)) === null) {
137-
return { key, objectName };
126+
const objectKey = `${prefix}${objectName}`;
127+
if ((await this.headObject(objectKey)) === null) {
128+
return { objectKey, objectName };
138129
}
139130
}
140131
throw new Error('Unable to generate unique S3 key');
@@ -197,19 +188,4 @@ export class S3Service implements OnModuleInit {
197188
});
198189
return await this.s3Client.send(command);
199190
}
200-
201-
async put(
202-
filename: string,
203-
buffer: Buffer,
204-
mimetype: string,
205-
options?: PutOptions,
206-
): Promise<string> {
207-
const { id = this.generateId(filename) } = options || {};
208-
const path: string = options?.folder ? `${options.folder}/${id}` : id;
209-
await this.putObject(path, buffer, mimetype, {
210-
...options?.metadata,
211-
filename: encodeFileName(filename),
212-
});
213-
return id;
214-
}
215191
}

src/wizard/wizard.service.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -157,31 +157,35 @@ export class WizardService {
157157
resourceDto,
158158
);
159159

160-
const filename = 'html.gz';
161-
const id = await this.s3Service.put(
162-
filename,
160+
const { objectKey } = await this.s3Service.generateObjectKey(
161+
this.gzipHtmlFolder,
162+
'html.gz',
163+
);
164+
const metadata = {
165+
resourceId: resource.id,
166+
url,
167+
};
168+
await this.s3Service.putObject(
169+
objectKey,
163170
compressedHtml.buffer,
164171
compressedHtml.mimetype,
165-
{
166-
folder: this.gzipHtmlFolder,
167-
metadata: { resourceId: resource.id, url },
168-
},
172+
metadata,
169173
);
170174

171175
if (this.isVideoUrl(url)) {
172176
const task = await this.wizardTaskService.createGenerateVideoNoteTask(
173177
userId,
174178
namespaceId,
175179
resource.id,
176-
{ html: [this.gzipHtmlFolder, id].join('/'), url, title },
180+
{ html: objectKey, url, title },
177181
);
178182
return { task_id: task.id, resource_id: resource.id };
179183
} else {
180184
const task = await this.wizardTaskService.createCollectTask(
181185
userId,
182186
namespaceId,
183187
resource.id,
184-
{ html: [this.gzipHtmlFolder, id].join('/'), url, title },
188+
{ html: objectKey, url, title },
185189
);
186190
return { task_id: task.id, resource_id: resource.id };
187191
}

0 commit comments

Comments
 (0)