mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-12-04 17:57:03 -05:00
94 lines
2.3 KiB
TypeScript
94 lines
2.3 KiB
TypeScript
|
/*
|
||
|
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
|
||
|
*
|
||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||
|
*/
|
||
|
|
||
|
import * as Joi from 'joi';
|
||
|
import { BackendType } from '../media/backends/backend-type.enum';
|
||
|
|
||
|
export interface MediaConfig {
|
||
|
backend: {
|
||
|
use: BackendType;
|
||
|
filesystem: {
|
||
|
uploadPath: string;
|
||
|
};
|
||
|
s3: {
|
||
|
accessKeyId: string;
|
||
|
secretAccessKey: string;
|
||
|
region: string;
|
||
|
bucket: string;
|
||
|
endPoint: string;
|
||
|
};
|
||
|
azure: {
|
||
|
connectionString: string;
|
||
|
container: string;
|
||
|
};
|
||
|
imgur: {
|
||
|
clientID: string;
|
||
|
};
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export const mediaSchema = Joi.object({
|
||
|
backend: {
|
||
|
use: Joi.string().valid(...Object.values(BackendType)),
|
||
|
filesystem: {
|
||
|
uploadPath: Joi.when('...use', {
|
||
|
is: Joi.valid(BackendType.FILESYSTEM),
|
||
|
then: Joi.string(),
|
||
|
otherwise: Joi.optional(),
|
||
|
}),
|
||
|
},
|
||
|
s3: Joi.when('...use', {
|
||
|
is: Joi.valid(BackendType.S3),
|
||
|
then: Joi.object({
|
||
|
accessKey: Joi.string(),
|
||
|
secretKey: Joi.string(),
|
||
|
endPoint: Joi.string(),
|
||
|
secure: Joi.boolean(),
|
||
|
port: Joi.number(),
|
||
|
}),
|
||
|
otherwise: Joi.optional(),
|
||
|
}),
|
||
|
azure: Joi.when('...use', {
|
||
|
is: Joi.valid(BackendType.AZURE),
|
||
|
then: Joi.object({
|
||
|
connectionString: Joi.string(),
|
||
|
container: Joi.string(),
|
||
|
}),
|
||
|
otherwise: Joi.optional(),
|
||
|
}),
|
||
|
imgur: Joi.when('...use', {
|
||
|
is: Joi.valid(BackendType.IMGUR),
|
||
|
then: Joi.object({
|
||
|
clientID: Joi.string(),
|
||
|
}),
|
||
|
otherwise: Joi.optional(),
|
||
|
}),
|
||
|
},
|
||
|
});
|
||
|
|
||
|
export const appConfigMedia = {
|
||
|
backend: {
|
||
|
use: process.env.HD_MEDIA_BACKEND,
|
||
|
filesystem: {
|
||
|
uploadPath: process.env.HD_MEDIA_BACKEND_FILESYSTEM_UPLOAD_PATH,
|
||
|
},
|
||
|
s3: {
|
||
|
accessKey: process.env.HD_MEDIA_BACKEND_S3_ACCESS_KEY,
|
||
|
secretKey: process.env.HD_MEDIA_BACKEND_S3_ACCESS_KEY,
|
||
|
endPoint: process.env.HD_MEDIA_BACKEND_S3_ENDPOINT,
|
||
|
secure: process.env.HD_MEDIA_BACKEND_S3_SECURE,
|
||
|
port: parseInt(process.env.HD_MEDIA_BACKEND_S3_PORT) || undefined,
|
||
|
},
|
||
|
azure: {
|
||
|
connectionString: process.env.HD_MEDIA_BACKEND_AZURE_CONNECTION_STRING,
|
||
|
container: process.env.HD_MEDIA_BACKEND_AZURE_CONTAINER,
|
||
|
},
|
||
|
imgur: {
|
||
|
clientID: process.env.HD_MEDIA_BACKEND_IMGUR_CLIENTID,
|
||
|
},
|
||
|
},
|
||
|
};
|