Skip to content

Commit 556b7f4

Browse files
authored
fix: custom metadata input names
1 parent 9486b37 commit 556b7f4

File tree

11 files changed

+40
-18
lines changed

11 files changed

+40
-18
lines changed

src/http/routes/object/getObjectInfo.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ async function requestHandler(
4646
obj = await request.storage
4747
.asSuperUser()
4848
.from(bucketName)
49-
.findObject(objectName, 'id,version,metadata,user_metadata,created_at')
49+
.findObject(objectName, 'id,name,version,metadata,user_metadata,created_at')
5050
} else {
5151
obj = await request.storage
5252
.from(bucketName)
53-
.findObject(objectName, 'id,version,metadata,user_metadata,created_at')
53+
.findObject(objectName, 'id,name,version,metadata,user_metadata,created_at')
5454
}
5555

5656
return request.storage.renderer(method).render(request, response, {

src/http/routes/tus/lifecycle.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,9 @@ export async function onUploadFinish(
204204

205205
const uploader = new Uploader(req.upload.storage.backend, req.upload.storage.db)
206206
let customMd: undefined | Record<string, string> = undefined
207-
if (upload.metadata?.userMetadata) {
207+
if (upload.metadata?.metadata) {
208208
try {
209-
customMd = JSON.parse(upload.metadata.userMetadata)
209+
customMd = JSON.parse(upload.metadata.metadata)
210210
} catch (e) {
211211
// no-op
212212
}

src/storage/backend/adapter.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export interface BrowserCacheHeaders {
1515
*/
1616
export type ObjectResponse = {
1717
metadata: ObjectMetadata
18+
httpStatusCode: number
1819
body?: ReadableStream<any> | Readable | Blob | Buffer
1920
}
2021

@@ -29,7 +30,7 @@ export type ObjectMetadata = {
2930
lastModified?: Date
3031
eTag: string
3132
contentRange?: string
32-
httpStatusCode: number
33+
httpStatusCode?: number
3334
}
3435

3536
export type UploadPart = {

src/storage/backend/file.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ export class FileBackend implements StorageBackendAdapter {
9595
eTag: checksum,
9696
contentLength: chunkSize,
9797
},
98+
httpStatusCode: 206,
9899
body,
99100
}
100101
} else {
@@ -110,6 +111,7 @@ export class FileBackend implements StorageBackendAdapter {
110111
contentLength: fileSize,
111112
},
112113
body,
114+
httpStatusCode: 200,
113115
}
114116
}
115117
}

src/storage/backend/s3.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ export interface S3ClientOptions {
6060

6161
/**
6262
* S3Backend
63-
* Interacts with an s3-compatible file system with this S3Adapter
63+
* Interacts with a s3-compatible file system with this S3Adapter
6464
*/
6565
export class S3Backend implements StorageBackendAdapter {
6666
client: S3Client
@@ -118,9 +118,10 @@ export class S3Backend implements StorageBackendAdapter {
118118
lastModified: data.LastModified,
119119
contentRange: data.ContentRange,
120120
contentLength: data.ContentLength || 0,
121-
httpStatusCode: data.$metadata.httpStatusCode || 200,
122121
size: data.ContentLength || 0,
122+
httpStatusCode: data.$metadata.httpStatusCode || 200,
123123
},
124+
httpStatusCode: data.$metadata.httpStatusCode || 200,
124125
body: data.Body,
125126
}
126127
}

src/storage/renderer/info.ts

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1+
import { Obj } from '@storage/schemas'
12
import { HeadRenderer } from './head'
2-
import { FastifyRequest } from 'fastify'
3+
import { FastifyRequest, FastifyReply } from 'fastify'
34
import { AssetResponse, RenderOptions } from './renderer'
4-
import { Obj } from '@storage/schemas'
5-
import { FastifyReply } from 'fastify/types/reply'
65

76
/**
87
* HeadRenderer
@@ -16,7 +15,18 @@ export class InfoRenderer extends HeadRenderer {
1615

1716
return {
1817
...headAsset,
19-
body: obj,
18+
body: {
19+
id: obj.id,
20+
name: obj.name,
21+
version: obj.version,
22+
size: obj.metadata?.size ?? null,
23+
content_type: obj.metadata?.mimetype ?? null,
24+
cache_control: obj.metadata?.cacheControl ?? null,
25+
etag: obj.metadata?.eTag ?? null,
26+
metadata: obj.user_metadata,
27+
last_modified: obj.metadata?.lastModified ?? null,
28+
created_at: obj.created_at,
29+
},
2030
}
2131
}
2232

@@ -26,6 +36,12 @@ export class InfoRenderer extends HeadRenderer {
2636
data: AssetResponse,
2737
options: RenderOptions
2838
) {
29-
// no-op
39+
response
40+
.status(data.metadata.httpStatusCode ?? 200)
41+
.header('Content-Type', 'application/json')
42+
.header('ETag', data.metadata.eTag)
43+
.header('Content-Length', data.metadata.contentLength)
44+
.header('Last-Modified', data.metadata.lastModified?.toUTCString())
45+
.header('CacheControl', data.metadata.cacheControl)
3046
}
3147
}

src/storage/uploader.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ export class Uploader {
297297

298298
body = formData.file
299299
/* @ts-expect-error: https://github.com/aws/aws-sdk-js-v3/issues/2085 */
300-
const customMd = formData.fields.userMetadata?.value
300+
const customMd = formData.fields.metadata?.value ?? formData.fields.userMetadata?.value
301301
/* @ts-expect-error: https://github.com/aws/aws-sdk-js-v3/issues/2085 */
302302
mimeType = formData.fields.contentType?.value || formData.mimetype
303303
cacheControl = cacheTime ? `max-age=${cacheTime}` : 'no-cache'

src/test/bucket.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ beforeAll(() => {
2222
cacheControl: 'no-cache',
2323
contentLength: 3746,
2424
},
25+
httpStatusCode: 200,
2526
body: Buffer.from(''),
2627
})
2728
})

src/test/common.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ export function useMockObject() {
4242
cacheControl: 'no-cache',
4343
contentLength: 3746,
4444
},
45+
httpStatusCode: 200,
4546
body: Buffer.from(''),
4647
})
4748

src/test/object.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ describe('testing POST object via multipart upload', () => {
358358
const form = new FormData()
359359
form.append('file', fs.createReadStream(`./src/test/assets/sadcat.jpg`))
360360
form.append(
361-
'userMetadata',
361+
'metadata',
362362
JSON.stringify({
363363
test1: 'test1',
364364
test2: 'test2',
@@ -438,7 +438,7 @@ describe('testing POST object via multipart upload', () => {
438438
const form = new FormData()
439439
form.append('file', fs.createReadStream(`./src/test/assets/sadcat.jpg`))
440440
form.append(
441-
'userMetadata',
441+
'metadata',
442442
JSON.stringify({
443443
test1: 'test1',
444444
test2: 'test2',
@@ -468,7 +468,7 @@ describe('testing POST object via multipart upload', () => {
468468

469469
const data = await response.json()
470470

471-
expect(data.user_metadata).toEqual({
471+
expect(data.metadata).toEqual({
472472
test1: 'test1',
473473
test2: 'test2',
474474
})

0 commit comments

Comments
 (0)