Uploader: make second argument an options object
This commit is contained in:
parent
25db277a9f
commit
c786e1bc55
|
@ -7,11 +7,11 @@ import type { Uploader } from './types.ts';
|
||||||
|
|
||||||
/** Meta-uploader determined from configuration. */
|
/** Meta-uploader determined from configuration. */
|
||||||
const configUploader: Uploader = {
|
const configUploader: Uploader = {
|
||||||
upload(file, signal) {
|
upload(file, opts) {
|
||||||
return uploader().upload(file, signal);
|
return uploader().upload(file, opts);
|
||||||
},
|
},
|
||||||
delete(cid, signal) {
|
delete(cid, opts) {
|
||||||
return uploader().delete(cid, signal);
|
return uploader().delete(cid, opts);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ const ipfsAddResponseSchema = z.object({
|
||||||
* and upload the file using the REST API.
|
* and upload the file using the REST API.
|
||||||
*/
|
*/
|
||||||
const ipfsUploader: Uploader = {
|
const ipfsUploader: Uploader = {
|
||||||
async upload(file, signal) {
|
async upload(file, opts) {
|
||||||
const url = new URL('/api/v0/add', Conf.ipfs.apiUrl);
|
const url = new URL('/api/v0/add', Conf.ipfs.apiUrl);
|
||||||
|
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
|
@ -27,7 +27,7 @@ const ipfsUploader: Uploader = {
|
||||||
const response = await fetchWorker(url, {
|
const response = await fetchWorker(url, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: formData,
|
body: formData,
|
||||||
signal,
|
signal: opts?.signal,
|
||||||
});
|
});
|
||||||
|
|
||||||
const { Hash } = ipfsAddResponseSchema.parse(await response.json());
|
const { Hash } = ipfsAddResponseSchema.parse(await response.json());
|
||||||
|
@ -36,7 +36,7 @@ const ipfsUploader: Uploader = {
|
||||||
cid: Hash,
|
cid: Hash,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
async delete(cid, signal) {
|
async delete(cid, opts) {
|
||||||
const url = new URL('/api/v0/pin/rm', Conf.ipfs.apiUrl);
|
const url = new URL('/api/v0/pin/rm', Conf.ipfs.apiUrl);
|
||||||
|
|
||||||
const query = new URLSearchParams();
|
const query = new URLSearchParams();
|
||||||
|
@ -46,7 +46,7 @@ const ipfsUploader: Uploader = {
|
||||||
|
|
||||||
await fetchWorker(url, {
|
await fetchWorker(url, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
signal,
|
signal: opts?.signal,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,10 +9,9 @@ import type { Uploader } from './types.ts';
|
||||||
* take advantage of IPFS features while not really using IPFS.
|
* take advantage of IPFS features while not really using IPFS.
|
||||||
*/
|
*/
|
||||||
const s3Uploader: Uploader = {
|
const s3Uploader: Uploader = {
|
||||||
async upload(file, _signal) {
|
async upload(file) {
|
||||||
const cid = await IpfsHash.of(file.stream()) as string;
|
const cid = await IpfsHash.of(file.stream()) as string;
|
||||||
|
|
||||||
// FIXME: Can't cancel S3 requests: https://github.com/bradenmacdonald/deno-s3-lite-client/issues/24
|
|
||||||
await client().putObject(`ipfs/${cid}`, file.stream(), {
|
await client().putObject(`ipfs/${cid}`, file.stream(), {
|
||||||
metadata: {
|
metadata: {
|
||||||
'Content-Type': file.type,
|
'Content-Type': file.type,
|
||||||
|
@ -24,8 +23,7 @@ const s3Uploader: Uploader = {
|
||||||
cid,
|
cid,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
async delete(cid, _signal) {
|
async delete(cid) {
|
||||||
// FIXME: Can't cancel S3 requests: https://github.com/bradenmacdonald/deno-s3-lite-client/issues/24
|
|
||||||
await client().deleteObject(`ipfs/${cid}`);
|
await client().deleteObject(`ipfs/${cid}`);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
/** Modular uploader interface, to support uploading to different backends. */
|
/** Modular uploader interface, to support uploading to different backends. */
|
||||||
interface Uploader {
|
interface Uploader {
|
||||||
/** Upload the file to the backend. */
|
/** Upload the file to the backend. */
|
||||||
upload(file: File, signal?: AbortSignal): Promise<UploadResult>;
|
upload(file: File, opts?: { signal?: AbortSignal }): Promise<UploadResult>;
|
||||||
/** Delete the file from the backend. */
|
/** Delete the file from the backend. */
|
||||||
delete(cid: string, signal?: AbortSignal): Promise<void>;
|
delete(cid: string, opts?: { signal?: AbortSignal }): Promise<void>;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return value from the uploader after uploading a file. */
|
/** Return value from the uploader after uploading a file. */
|
||||||
|
|
Loading…
Reference in New Issue