diff --git a/backend/package.json b/backend/package.json index 6fa4aa6..558551d 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "sub-store", - "version": "2.14.143", + "version": "2.14.144", "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.", "main": "src/main.js", "scripts": { diff --git a/backend/src/restful/file.js b/backend/src/restful/file.js index 80357c9..bf2db86 100644 --- a/backend/src/restful/file.js +++ b/backend/src/restful/file.js @@ -12,7 +12,10 @@ export default function register($app) { .patch(updateFile) .delete(deleteFile); + $app.route('/api/wholeFile/:name').get(getWholeFile); + $app.route('/api/files').get(getAllFiles).post(createFile).put(replaceFile); + $app.route('/api/wholeFiles').get(getAllWholeFiles); } // file API @@ -43,7 +46,25 @@ function getFile(req, res) { const allFiles = $.read(FILES_KEY); const file = findByName(allFiles, name); if (file) { - res.status(200).json(file.content); + res.set('Content-Type', 'text/plain; charset=utf-8').send(file.content); + } else { + failed( + res, + new ResourceNotFoundError( + `FILE_NOT_FOUND`, + `File ${name} does not exist`, + 404, + ), + ); + } +} +function getWholeFile(req, res) { + let { name } = req.params; + name = decodeURIComponent(name); + const allFiles = $.read(FILES_KEY); + const file = findByName(allFiles, name); + if (file) { + success(res, file); } else { failed( res, @@ -102,6 +123,11 @@ function getAllFiles(req, res) { ); } +function getAllWholeFiles(req, res) { + const allFiles = $.read(FILES_KEY); + success(res, allFiles); +} + function replaceFile(req, res) { const allFiles = req.body; $.write(allFiles, FILES_KEY); diff --git a/backend/src/restful/module.js b/backend/src/restful/module.js index 2df6648..6ef8885 100644 --- a/backend/src/restful/module.js +++ b/backend/src/restful/module.js @@ -47,7 +47,9 @@ function getModule(req, res) { const allModules = $.read(MODULES_KEY); const module = findByName(allModules, name); if (module) { - res.status(200).json(module.content); + res.set('Content-Type', 'text/plain; charset=utf-8').send( + module.content, + ); } else { failed( res, diff --git a/backend/src/restful/sort.js b/backend/src/restful/sort.js index aa6400e..03240e0 100644 --- a/backend/src/restful/sort.js +++ b/backend/src/restful/sort.js @@ -1,4 +1,9 @@ -import { ARTIFACTS_KEY, COLLECTIONS_KEY, SUBS_KEY } from '@/constants'; +import { + ARTIFACTS_KEY, + COLLECTIONS_KEY, + SUBS_KEY, + FILES_KEY, +} from '@/constants'; import $ from '@/core/app'; import { success } from '@/restful/response'; @@ -6,6 +11,7 @@ export default function register($app) { $app.post('/api/sort/subs', sortSubs); $app.post('/api/sort/collections', sortCollections); $app.post('/api/sort/artifacts', sortArtifacts); + $app.post('/api/sort/files', sortFiles); } function sortSubs(req, res) { @@ -33,3 +39,11 @@ function sortArtifacts(req, res) { $.write(allArtifacts, ARTIFACTS_KEY); success(res, allArtifacts); } + +function sortFiles(req, res) { + const orders = req.body; + const allFiles = $.read(FILES_KEY); + allFiles.sort((a, b) => orders.indexOf(a.name) - orders.indexOf(b.name)); + $.write(allFiles, FILES_KEY); + success(res, allFiles); +}