mirror of
https://git.mirrors.martin98.com/https://github.com/sub-store-org/Sub-Store.git
synced 2025-08-22 00:59:07 +08:00
feat: 模块接口
This commit is contained in:
parent
33a17c2d66
commit
127ce90bb3
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "sub-store",
|
||||
"version": "2.14.53",
|
||||
"version": "2.14.54",
|
||||
"description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.",
|
||||
"main": "src/main.js",
|
||||
"scripts": {
|
||||
|
@ -3,6 +3,7 @@ export const SETTINGS_KEY = 'settings';
|
||||
export const SUBS_KEY = 'subs';
|
||||
export const COLLECTIONS_KEY = 'collections';
|
||||
export const FILES_KEY = 'files';
|
||||
export const MODULES_KEY = 'modules';
|
||||
export const ARTIFACTS_KEY = 'artifacts';
|
||||
export const RULES_KEY = 'rules';
|
||||
export const GIST_BACKUP_KEY = 'Auto Generated Sub-Store Backup';
|
||||
|
@ -5,6 +5,7 @@ import registerSubscriptionRoutes from './subscriptions';
|
||||
import registerCollectionRoutes from './collections';
|
||||
import registerArtifactRoutes from './artifacts';
|
||||
import registerFileRoutes from './file';
|
||||
import registerModuleRoutes from './module';
|
||||
import registerSyncRoutes from './sync';
|
||||
import registerDownloadRoutes from './download';
|
||||
import registerSettingRoutes from './settings';
|
||||
@ -25,6 +26,7 @@ export default function serve() {
|
||||
registerSettingRoutes($app);
|
||||
registerArtifactRoutes($app);
|
||||
registerFileRoutes($app);
|
||||
registerModuleRoutes($app);
|
||||
registerSyncRoutes($app);
|
||||
registerNodeInfoRoutes($app);
|
||||
registerMiscRoutes($app);
|
||||
|
106
backend/src/restful/module.js
Normal file
106
backend/src/restful/module.js
Normal file
@ -0,0 +1,106 @@
|
||||
import { deleteByName, findByName, updateByName } from '@/utils/database';
|
||||
import { MODULES_KEY } from '@/constants';
|
||||
import { failed, success } from '@/restful/response';
|
||||
import $ from '@/core/app';
|
||||
import { RequestInvalidError, ResourceNotFoundError } from '@/restful/errors';
|
||||
|
||||
export default function register($app) {
|
||||
if (!$.read(MODULES_KEY)) $.write([], MODULES_KEY);
|
||||
|
||||
$app.route('/api/module/:name')
|
||||
.get(getModule)
|
||||
.patch(updateModule)
|
||||
.delete(deleteModule);
|
||||
|
||||
$app.route('/api/modules')
|
||||
.get(getAllModules)
|
||||
.post(createModule)
|
||||
.put(replaceModule);
|
||||
}
|
||||
|
||||
// module API
|
||||
function createModule(req, res) {
|
||||
const module = req.body;
|
||||
$.info(`正在创建模块:${module.name}`);
|
||||
const allModules = $.read(MODULES_KEY);
|
||||
if (findByName(allModules, module.name)) {
|
||||
failed(
|
||||
res,
|
||||
new RequestInvalidError(
|
||||
'DUPLICATE_KEY',
|
||||
`Module ${module.name} already exists.`,
|
||||
),
|
||||
);
|
||||
}
|
||||
allModules.push(module);
|
||||
$.write(allModules, MODULES_KEY);
|
||||
success(res, module, 201);
|
||||
}
|
||||
|
||||
function getModule(req, res) {
|
||||
let { name } = req.params;
|
||||
name = decodeURIComponent(name);
|
||||
const allModules = $.read(MODULES_KEY);
|
||||
const module = findByName(allModules, name);
|
||||
if (module) {
|
||||
success(res, module);
|
||||
} else {
|
||||
failed(
|
||||
res,
|
||||
new ResourceNotFoundError(
|
||||
`MODULE_NOT_FOUND`,
|
||||
`Module ${name} does not exist`,
|
||||
404,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function updateModule(req, res) {
|
||||
let { name } = req.params;
|
||||
name = decodeURIComponent(name);
|
||||
let module = req.body;
|
||||
const allModules = $.read(MODULES_KEY);
|
||||
const oldModule = findByName(allModules, name);
|
||||
if (oldModule) {
|
||||
const newModule = {
|
||||
...oldModule,
|
||||
...module,
|
||||
};
|
||||
$.info(`正在更新模块:${name}...`);
|
||||
|
||||
updateByName(allModules, name, newModule);
|
||||
$.write(allModules, MODULES_KEY);
|
||||
success(res, newModule);
|
||||
} else {
|
||||
failed(
|
||||
res,
|
||||
new ResourceNotFoundError(
|
||||
'RESOURCE_NOT_FOUND',
|
||||
`Module ${name} does not exist!`,
|
||||
),
|
||||
404,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function deleteModule(req, res) {
|
||||
let { name } = req.params;
|
||||
name = decodeURIComponent(name);
|
||||
$.info(`正在删除模块:${name}`);
|
||||
let allModules = $.read(MODULES_KEY);
|
||||
deleteByName(allModules, name);
|
||||
$.write(allModules, MODULES_KEY);
|
||||
success(res);
|
||||
}
|
||||
|
||||
function getAllModules(req, res) {
|
||||
const allModules = $.read(MODULES_KEY);
|
||||
success(res, allModules);
|
||||
}
|
||||
|
||||
function replaceModule(req, res) {
|
||||
const allModules = req.body;
|
||||
$.write(allModules, MODULES_KEY);
|
||||
success(res);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user