@forge/object-store 1.3.5-next.0 → 1.4.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/out/__test__/object-store.test.js +78 -0
- package/out/object-store.d.ts +2 -0
- package/out/object-store.d.ts.map +1 -1
- package/out/object-store.js +13 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -49,6 +49,10 @@ const payload = {
|
|
|
49
49
|
const uploadUrlResponse = await fos.createUploadUrl(payload);
|
|
50
50
|
const uploadUrl = uploadUrlResponse.url;
|
|
51
51
|
|
|
52
|
+
// Create a pre-signed upload url for use in browsers
|
|
53
|
+
const publicUploadUrlResponse = await fos.createUploadUrl(payload);
|
|
54
|
+
const publicUploadUrl = publicUploadUrlResponse.url;
|
|
55
|
+
|
|
52
56
|
// Both standard fetch or api.fetch can be used to upload the buffer
|
|
53
57
|
const response = await fetch(url, {
|
|
54
58
|
method: 'PUT',
|
|
@@ -181,6 +181,38 @@ describe('ObjectStoreClient', () => {
|
|
|
181
181
|
expect(response).toEqual({ url: 'upload-url' });
|
|
182
182
|
});
|
|
183
183
|
});
|
|
184
|
+
describe('createPublicUploadUrl', () => {
|
|
185
|
+
it('should send a POST request with the correct headers and body, and return a URL', async () => {
|
|
186
|
+
const mockResponse = {
|
|
187
|
+
ok: true,
|
|
188
|
+
status: 200,
|
|
189
|
+
text: createMockBody(JSON.stringify({ url: 'public-upload-url' }))
|
|
190
|
+
};
|
|
191
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
192
|
+
const objectId = '1';
|
|
193
|
+
const fileProperties = {
|
|
194
|
+
key: objectId,
|
|
195
|
+
length: 123,
|
|
196
|
+
checksum: 'abc123',
|
|
197
|
+
checksumType: 'SHA1',
|
|
198
|
+
ttlSeconds: 3600,
|
|
199
|
+
overwrite: true
|
|
200
|
+
};
|
|
201
|
+
const response = await osClient.createPublicUploadUrl(fileProperties);
|
|
202
|
+
expect(mockFetch).toHaveBeenCalledWith('api/v1/public-upload-url', {
|
|
203
|
+
method: 'POST',
|
|
204
|
+
redirect: 'follow',
|
|
205
|
+
headers: {
|
|
206
|
+
Accept: 'application/json',
|
|
207
|
+
'Content-Type': 'application/json'
|
|
208
|
+
},
|
|
209
|
+
body: JSON.stringify(fileProperties)
|
|
210
|
+
});
|
|
211
|
+
expect(mockResponse.status).toBe(200);
|
|
212
|
+
expect(mockResponse.text).toHaveBeenCalled();
|
|
213
|
+
expect(response).toEqual({ url: 'public-upload-url' });
|
|
214
|
+
});
|
|
215
|
+
});
|
|
184
216
|
describe('createDownloadUrl', () => {
|
|
185
217
|
it('should send a POST request with the correct headers and body, and return a URL', async () => {
|
|
186
218
|
const mockResponse = {
|
|
@@ -227,6 +259,52 @@ describe('ObjectStoreClient', () => {
|
|
|
227
259
|
expect(response).toEqual({ url: 'download-url' });
|
|
228
260
|
});
|
|
229
261
|
});
|
|
262
|
+
describe('createPublicDownloadUrl', () => {
|
|
263
|
+
it('should send a POST request with the correct headers and body, and return a URL', async () => {
|
|
264
|
+
const mockResponse = {
|
|
265
|
+
ok: true,
|
|
266
|
+
status: 200,
|
|
267
|
+
text: createMockBody(JSON.stringify({ url: 'public-download-url' }))
|
|
268
|
+
};
|
|
269
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
270
|
+
const objectId = '1';
|
|
271
|
+
const response = await osClient.createPublicDownloadUrl(objectId);
|
|
272
|
+
expect(mockFetch).toHaveBeenCalledWith('api/v1/public-download-url', {
|
|
273
|
+
method: 'POST',
|
|
274
|
+
redirect: 'follow',
|
|
275
|
+
headers: {
|
|
276
|
+
Accept: 'application/json',
|
|
277
|
+
'Content-Type': 'application/json'
|
|
278
|
+
},
|
|
279
|
+
body: JSON.stringify({ key: objectId })
|
|
280
|
+
});
|
|
281
|
+
expect(mockResponse.status).toBe(200);
|
|
282
|
+
expect(mockResponse.text).toHaveBeenCalled();
|
|
283
|
+
expect(response).toEqual({ url: 'public-download-url' });
|
|
284
|
+
});
|
|
285
|
+
it('should send a POST request with cdn:true option and return a URL', async () => {
|
|
286
|
+
const mockResponse = {
|
|
287
|
+
ok: true,
|
|
288
|
+
status: 200,
|
|
289
|
+
text: createMockBody(JSON.stringify({ url: 'public-download-url' }))
|
|
290
|
+
};
|
|
291
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
292
|
+
const objectId = '1';
|
|
293
|
+
const response = await osClient.createPublicDownloadUrl(objectId, { cdn: true });
|
|
294
|
+
expect(mockFetch).toHaveBeenCalledWith('api/v1/public-download-url', {
|
|
295
|
+
method: 'POST',
|
|
296
|
+
redirect: 'follow',
|
|
297
|
+
headers: {
|
|
298
|
+
Accept: 'application/json',
|
|
299
|
+
'Content-Type': 'application/json'
|
|
300
|
+
},
|
|
301
|
+
body: JSON.stringify({ key: objectId, cdn: true })
|
|
302
|
+
});
|
|
303
|
+
expect(mockResponse.status).toBe(200);
|
|
304
|
+
expect(mockResponse.text).toHaveBeenCalled();
|
|
305
|
+
expect(response).toEqual({ url: 'public-download-url' });
|
|
306
|
+
});
|
|
307
|
+
});
|
|
230
308
|
describe('createCDNUrl', () => {
|
|
231
309
|
it('should send a POST request with the correct headers and body, and return a URL', async () => {
|
|
232
310
|
const mockResponse = {
|
package/out/object-store.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ export declare class ObjectStoreClient {
|
|
|
5
5
|
get(key: string, options?: GetOptions): Promise<ObjectReference | undefined>;
|
|
6
6
|
delete(key: string, options?: DeleteOptions): Promise<void>;
|
|
7
7
|
createUploadUrl(body: UploadUrlBody): Promise<PresignedUrlResponse | undefined>;
|
|
8
|
+
createPublicUploadUrl(body: UploadUrlBody): Promise<PresignedUrlResponse | undefined>;
|
|
8
9
|
createDownloadUrl(key: string, options?: CreateDownloadUrlOptions): Promise<PresignedUrlResponse | undefined>;
|
|
10
|
+
createPublicDownloadUrl(key: string, options?: CreateDownloadUrlOptions): Promise<PresignedUrlResponse | undefined>;
|
|
9
11
|
createCDNUrl(key: string, options?: CDNOptions): Promise<PresignedUrlResponse | undefined>;
|
|
10
12
|
}
|
|
11
13
|
export declare const objectStore: ObjectStoreClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-store.d.ts","sourceRoot":"","sources":["../src/object-store.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EACV,wBAAwB,EACxB,aAAa,EACb,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,aAAa,EACd,MAAM,SAAS,CAAC;AASjB,qBAAa,iBAAiB;YAEd,WAAW;YASX,WAAW;IAoCZ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAkB5E,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3D,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"object-store.d.ts","sourceRoot":"","sources":["../src/object-store.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EACV,wBAAwB,EACxB,aAAa,EACb,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,aAAa,EACd,MAAM,SAAS,CAAC;AASjB,qBAAa,iBAAiB;YAEd,WAAW;YASX,WAAW;IAoCZ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAkB5E,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3D,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAgB/E,qBAAqB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAiBrF,iBAAiB,CAC5B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAkB/B,uBAAuB,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAkB/B,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;CAYxG;AAED,eAAO,MAAM,WAAW,mBAA0B,CAAC"}
|
package/out/object-store.js
CHANGED
|
@@ -57,6 +57,12 @@ class ObjectStoreClient {
|
|
|
57
57
|
'Content-Type': 'application/json'
|
|
58
58
|
}, JSON.stringify(body));
|
|
59
59
|
}
|
|
60
|
+
async createPublicUploadUrl(body) {
|
|
61
|
+
return this.requestJson(ValidHttpMethod.POST, 'api/v1/public-upload-url', {
|
|
62
|
+
Accept: 'application/json',
|
|
63
|
+
'Content-Type': 'application/json'
|
|
64
|
+
}, JSON.stringify(body));
|
|
65
|
+
}
|
|
60
66
|
async createDownloadUrl(key, options) {
|
|
61
67
|
const cdn = options?.cdn;
|
|
62
68
|
return this.requestJson(ValidHttpMethod.POST, 'api/v1/download-url', {
|
|
@@ -64,6 +70,13 @@ class ObjectStoreClient {
|
|
|
64
70
|
'Content-Type': 'application/json'
|
|
65
71
|
}, JSON.stringify({ key, cdn }));
|
|
66
72
|
}
|
|
73
|
+
async createPublicDownloadUrl(key, options) {
|
|
74
|
+
const cdn = options?.cdn;
|
|
75
|
+
return this.requestJson(ValidHttpMethod.POST, 'api/v1/public-download-url', {
|
|
76
|
+
Accept: 'application/json',
|
|
77
|
+
'Content-Type': 'application/json'
|
|
78
|
+
}, JSON.stringify({ key, cdn }));
|
|
79
|
+
}
|
|
67
80
|
async createCDNUrl(key, options) {
|
|
68
81
|
const ttlSeconds = options?.ttlSeconds;
|
|
69
82
|
return this.requestJson(ValidHttpMethod.POST, 'api/v1/cdn-url', {
|