mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 11:29:46 +00:00
Remove Conf from S3Uploader, uploaderMiddleware
This commit is contained in:
parent
478c77bb62
commit
8d2c83bb09
2 changed files with 20 additions and 21 deletions
|
|
@ -2,44 +2,44 @@ import { BlossomUploader, NostrBuildUploader } from '@nostrify/nostrify/uploader
|
||||||
import { safeFetch } from '@soapbox/safe-fetch';
|
import { safeFetch } from '@soapbox/safe-fetch';
|
||||||
|
|
||||||
import { AppMiddleware } from '@/app.ts';
|
import { AppMiddleware } from '@/app.ts';
|
||||||
import { Conf } from '@/config.ts';
|
|
||||||
import { DenoUploader } from '@/uploaders/DenoUploader.ts';
|
import { DenoUploader } from '@/uploaders/DenoUploader.ts';
|
||||||
import { IPFSUploader } from '@/uploaders/IPFSUploader.ts';
|
import { IPFSUploader } from '@/uploaders/IPFSUploader.ts';
|
||||||
import { S3Uploader } from '@/uploaders/S3Uploader.ts';
|
import { S3Uploader } from '@/uploaders/S3Uploader.ts';
|
||||||
|
|
||||||
/** Set an uploader for the user. */
|
/** Set an uploader for the user. */
|
||||||
export const uploaderMiddleware: AppMiddleware = async (c, next) => {
|
export const uploaderMiddleware: AppMiddleware = async (c, next) => {
|
||||||
const signer = c.get('signer');
|
const { signer, conf } = c.var;
|
||||||
|
|
||||||
switch (Conf.uploader) {
|
switch (conf.uploader) {
|
||||||
case 's3':
|
case 's3':
|
||||||
c.set(
|
c.set(
|
||||||
'uploader',
|
'uploader',
|
||||||
new S3Uploader({
|
new S3Uploader({
|
||||||
accessKey: Conf.s3.accessKey,
|
accessKey: conf.s3.accessKey,
|
||||||
bucket: Conf.s3.bucket,
|
bucket: conf.s3.bucket,
|
||||||
endPoint: Conf.s3.endPoint!,
|
endPoint: conf.s3.endPoint!,
|
||||||
pathStyle: Conf.s3.pathStyle,
|
pathStyle: conf.s3.pathStyle,
|
||||||
port: Conf.s3.port,
|
port: conf.s3.port,
|
||||||
region: Conf.s3.region!,
|
region: conf.s3.region!,
|
||||||
secretKey: Conf.s3.secretKey,
|
secretKey: conf.s3.secretKey,
|
||||||
sessionToken: Conf.s3.sessionToken,
|
sessionToken: conf.s3.sessionToken,
|
||||||
useSSL: Conf.s3.useSSL,
|
useSSL: conf.s3.useSSL,
|
||||||
|
baseUrl: conf.mediaDomain,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case 'ipfs':
|
case 'ipfs':
|
||||||
c.set('uploader', new IPFSUploader({ baseUrl: Conf.mediaDomain, apiUrl: Conf.ipfs.apiUrl, fetch: safeFetch }));
|
c.set('uploader', new IPFSUploader({ baseUrl: conf.mediaDomain, apiUrl: conf.ipfs.apiUrl, fetch: safeFetch }));
|
||||||
break;
|
break;
|
||||||
case 'local':
|
case 'local':
|
||||||
c.set('uploader', new DenoUploader({ baseUrl: Conf.mediaDomain, dir: Conf.uploadsDir }));
|
c.set('uploader', new DenoUploader({ baseUrl: conf.mediaDomain, dir: conf.uploadsDir }));
|
||||||
break;
|
break;
|
||||||
case 'nostrbuild':
|
case 'nostrbuild':
|
||||||
c.set('uploader', new NostrBuildUploader({ endpoint: Conf.nostrbuildEndpoint, signer, fetch: safeFetch }));
|
c.set('uploader', new NostrBuildUploader({ endpoint: conf.nostrbuildEndpoint, signer, fetch: safeFetch }));
|
||||||
break;
|
break;
|
||||||
case 'blossom':
|
case 'blossom':
|
||||||
if (signer) {
|
if (signer) {
|
||||||
c.set('uploader', new BlossomUploader({ servers: Conf.blossomServers, signer, fetch: safeFetch }));
|
c.set('uploader', new BlossomUploader({ servers: conf.blossomServers, signer, fetch: safeFetch }));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,6 @@ import { crypto } from '@std/crypto';
|
||||||
import { encodeHex } from '@std/encoding/hex';
|
import { encodeHex } from '@std/encoding/hex';
|
||||||
import { extensionsByType } from '@std/media-types';
|
import { extensionsByType } from '@std/media-types';
|
||||||
|
|
||||||
import { Conf } from '@/config.ts';
|
|
||||||
|
|
||||||
export interface S3UploaderOpts {
|
export interface S3UploaderOpts {
|
||||||
endPoint: string;
|
endPoint: string;
|
||||||
region: string;
|
region: string;
|
||||||
|
|
@ -18,13 +16,14 @@ export interface S3UploaderOpts {
|
||||||
port?: number;
|
port?: number;
|
||||||
sessionToken?: string;
|
sessionToken?: string;
|
||||||
useSSL?: boolean;
|
useSSL?: boolean;
|
||||||
|
baseUrl?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** S3-compatible uploader for AWS, Wasabi, DigitalOcean Spaces, and more. */
|
/** S3-compatible uploader for AWS, Wasabi, DigitalOcean Spaces, and more. */
|
||||||
export class S3Uploader implements NUploader {
|
export class S3Uploader implements NUploader {
|
||||||
private client: S3Client;
|
private client: S3Client;
|
||||||
|
|
||||||
constructor(opts: S3UploaderOpts) {
|
constructor(private opts: S3UploaderOpts) {
|
||||||
this.client = new S3Client(opts);
|
this.client = new S3Client(opts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -40,10 +39,10 @@ export class S3Uploader implements NUploader {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const { pathStyle, bucket } = Conf.s3;
|
const { pathStyle, bucket, baseUrl } = this.opts;
|
||||||
|
|
||||||
const path = (pathStyle && bucket) ? join(bucket, filename) : filename;
|
const path = (pathStyle && bucket) ? join(bucket, filename) : filename;
|
||||||
const url = new URL(path, Conf.mediaDomain).toString();
|
const url = new URL(path, baseUrl).toString();
|
||||||
|
|
||||||
return [
|
return [
|
||||||
['url', url],
|
['url', url],
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue