This commit is contained in:
@@ -51,7 +51,9 @@ export default class ApiService extends Service {
|
|||||||
authentication: false,
|
authentication: false,
|
||||||
authorization: false,
|
authorization: false,
|
||||||
autoAliases: true,
|
autoAliases: true,
|
||||||
aliases: {},
|
aliases: {
|
||||||
|
"GET /settings/getDirectoryStatus": "settings.getDirectoryStatus",
|
||||||
|
},
|
||||||
callingOptions: {},
|
callingOptions: {},
|
||||||
bodyParsers: {
|
bodyParsers: {
|
||||||
json: { strict: false, limit: "1MB" },
|
json: { strict: false, limit: "1MB" },
|
||||||
|
|||||||
@@ -9,6 +9,9 @@ import {
|
|||||||
import { DbMixin } from "../mixins/db.mixin";
|
import { DbMixin } from "../mixins/db.mixin";
|
||||||
import Settings from "../models/settings.model";
|
import Settings from "../models/settings.model";
|
||||||
import { isEmpty, pickBy, identity, map, isNil } from "lodash";
|
import { isEmpty, pickBy, identity, map, isNil } from "lodash";
|
||||||
|
import fs from "fs";
|
||||||
|
import path from "path";
|
||||||
|
import { COMICS_DIRECTORY, USERDATA_DIRECTORY } from "../constants/directories";
|
||||||
const ObjectId = require("mongoose").Types.ObjectId;
|
const ObjectId = require("mongoose").Types.ObjectId;
|
||||||
|
|
||||||
export default class SettingsService extends Service {
|
export default class SettingsService extends Service {
|
||||||
@@ -41,6 +44,66 @@ export default class SettingsService extends Service {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
getDirectoryStatus: {
|
||||||
|
rest: "GET /getDirectoryStatus",
|
||||||
|
params: {},
|
||||||
|
handler: async (ctx: Context<{}>) => {
|
||||||
|
const comicsDirectoryEnvSet = !!process.env.COMICS_DIRECTORY;
|
||||||
|
const userdataDirectoryEnvSet = !!process.env.USERDATA_DIRECTORY;
|
||||||
|
|
||||||
|
const resolvedComicsDirectory = path.resolve(COMICS_DIRECTORY);
|
||||||
|
const resolvedUserdataDirectory = path.resolve(USERDATA_DIRECTORY);
|
||||||
|
|
||||||
|
let comicsDirectoryExists = false;
|
||||||
|
let userdataDirectoryExists = false;
|
||||||
|
|
||||||
|
try {
|
||||||
|
await fs.promises.access(resolvedComicsDirectory, fs.constants.F_OK);
|
||||||
|
comicsDirectoryExists = true;
|
||||||
|
} catch {
|
||||||
|
comicsDirectoryExists = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await fs.promises.access(resolvedUserdataDirectory, fs.constants.F_OK);
|
||||||
|
userdataDirectoryExists = true;
|
||||||
|
} catch {
|
||||||
|
userdataDirectoryExists = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const issues: string[] = [];
|
||||||
|
|
||||||
|
if (!comicsDirectoryEnvSet) {
|
||||||
|
issues.push("COMICS_DIRECTORY environment variable is not set");
|
||||||
|
}
|
||||||
|
if (!userdataDirectoryEnvSet) {
|
||||||
|
issues.push("USERDATA_DIRECTORY environment variable is not set");
|
||||||
|
}
|
||||||
|
if (!comicsDirectoryExists) {
|
||||||
|
issues.push(`Comics directory does not exist: ${resolvedComicsDirectory}`);
|
||||||
|
}
|
||||||
|
if (!userdataDirectoryExists) {
|
||||||
|
issues.push(`Userdata directory does not exist: ${resolvedUserdataDirectory}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
comicsDirectory: {
|
||||||
|
path: resolvedComicsDirectory,
|
||||||
|
envSet: comicsDirectoryEnvSet,
|
||||||
|
exists: comicsDirectoryExists,
|
||||||
|
isValid: comicsDirectoryEnvSet && comicsDirectoryExists,
|
||||||
|
},
|
||||||
|
userdataDirectory: {
|
||||||
|
path: resolvedUserdataDirectory,
|
||||||
|
envSet: userdataDirectoryEnvSet,
|
||||||
|
exists: userdataDirectoryExists,
|
||||||
|
isValid: userdataDirectoryEnvSet && userdataDirectoryExists,
|
||||||
|
},
|
||||||
|
isValid: comicsDirectoryEnvSet && userdataDirectoryEnvSet && comicsDirectoryExists && userdataDirectoryExists,
|
||||||
|
issues,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
getSettings: {
|
getSettings: {
|
||||||
rest: "GET /getAllSettings",
|
rest: "GET /getAllSettings",
|
||||||
params: {},
|
params: {},
|
||||||
|
|||||||
Reference in New Issue
Block a user