ditto/src/uploaders/config.ts
2024-05-18 18:23:04 -05:00

36 lines
959 B
TypeScript

import { Conf } from '@/config.ts';
import { ipfsUploader } from '@/uploaders/ipfs.ts';
import { localUploader } from '@/uploaders/local.ts';
import { nostrbuildUploader } from '@/uploaders/nostrbuild.ts';
import { s3Uploader } from '@/uploaders/s3.ts';
import type { Uploader } from './types.ts';
/** Meta-uploader determined from configuration. */
const configUploader: Uploader = {
upload(file, opts) {
return uploader().upload(file, opts);
},
async delete(id, opts) {
return await uploader().delete?.(id, opts);
},
};
/** Get the uploader module based on configuration. */
function uploader() {
switch (Conf.uploader) {
case 's3':
return s3Uploader;
case 'ipfs':
return ipfsUploader;
case 'local':
return localUploader;
case 'nostrbuild':
return nostrbuildUploader;
default:
throw new Error('No `DITTO_UPLOADER` configured. Uploads are disabled.');
}
}
export { configUploader };