mirror of
https://git.mirrors.martin98.com/https://github.com/sub-store-org/Sub-Store.git
synced 2026-04-16 23:58:05 +08:00
feat: 文件支持脚本操作
This commit is contained in:
@@ -3,6 +3,7 @@ import { FILES_KEY } from '@/constants';
|
||||
import { failed, success } from '@/restful/response';
|
||||
import $ from '@/core/app';
|
||||
import { RequestInvalidError, ResourceNotFoundError } from '@/restful/errors';
|
||||
import { ProxyUtils } from '@/core/proxy-utils';
|
||||
|
||||
export default function register($app) {
|
||||
if (!$.read(FILES_KEY)) $.write([], FILES_KEY);
|
||||
@@ -40,13 +41,17 @@ function createFile(req, res) {
|
||||
success(res, file, 201);
|
||||
}
|
||||
|
||||
function getFile(req, res) {
|
||||
async function getFile(req, res) {
|
||||
let { name } = req.params;
|
||||
name = decodeURIComponent(name);
|
||||
const allFiles = $.read(FILES_KEY);
|
||||
const file = findByName(allFiles, name);
|
||||
if (file) {
|
||||
res.set('Content-Type', 'text/plain; charset=utf-8').send(file.content);
|
||||
let content = file.content ?? '';
|
||||
content = await ProxyUtils.process(content, file.process || []);
|
||||
res.set('Content-Type', 'text/plain; charset=utf-8').send(
|
||||
content ?? '',
|
||||
);
|
||||
} else {
|
||||
failed(
|
||||
res,
|
||||
|
||||
@@ -9,6 +9,28 @@ import $ from '@/core/app';
|
||||
export default function register($app) {
|
||||
$app.post('/api/preview/sub', compareSub);
|
||||
$app.post('/api/preview/collection', compareCollection);
|
||||
$app.post('/api/preview/file', previewFile);
|
||||
}
|
||||
|
||||
async function previewFile(req, res) {
|
||||
try {
|
||||
let { content = '', process = [] } = req.body;
|
||||
|
||||
const processed = await ProxyUtils.process(content, process || []);
|
||||
|
||||
// produce
|
||||
success(res, { original: content, processed });
|
||||
} catch (err) {
|
||||
$.error(err.message ?? err);
|
||||
failed(
|
||||
res,
|
||||
new InternalServerError(
|
||||
`INTERNAL_SERVER_ERROR`,
|
||||
`Failed to preview file`,
|
||||
`Reason: ${err.message ?? err}`,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
async function compareSub(req, res) {
|
||||
|
||||
@@ -331,7 +331,10 @@ async function produceArtifact({
|
||||
} else if (type === 'file') {
|
||||
const allFiles = $.read(FILES_KEY);
|
||||
const file = findByName(allFiles, name);
|
||||
return file?.content ?? '';
|
||||
if (!file) throw new Error(`找不到文件 ${name}`);
|
||||
let content = file.content ?? '';
|
||||
content = await ProxyUtils.process(content, file.process || []);
|
||||
return content ?? '';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user