mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-09-14 10:52:34 +00:00
47 lines
1.5 KiB
JavaScript
47 lines
1.5 KiB
JavaScript
import { dirname } from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
import $RefParser from "@apidevtools/json-schema-ref-parser";
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = dirname(__filename);
|
|
|
|
let compiledSchema = null;
|
|
|
|
/**
|
|
* Compiles the schema, by dereferencing it, only once
|
|
* and returns the memory cached value
|
|
*/
|
|
const getCompiledSchema = async () => {
|
|
if (compiledSchema === null) {
|
|
compiledSchema = await $RefParser.dereference(`${__dirname}/swagger.json`, {
|
|
mutateInputSchema: false,
|
|
});
|
|
}
|
|
return compiledSchema;
|
|
};
|
|
|
|
/**
|
|
* Scans the schema for the validation schema for the given path and method
|
|
* and returns it.
|
|
*
|
|
* @param {string} path
|
|
* @param {string} method
|
|
* @returns string|null
|
|
*/
|
|
const getValidationSchema = (path, method) => {
|
|
if (
|
|
compiledSchema !== null &&
|
|
typeof compiledSchema.paths[path] !== "undefined" &&
|
|
typeof compiledSchema.paths[path][method] !== "undefined" &&
|
|
typeof compiledSchema.paths[path][method].requestBody !== "undefined" &&
|
|
typeof compiledSchema.paths[path][method].requestBody.content !== "undefined" &&
|
|
typeof compiledSchema.paths[path][method].requestBody.content["application/json"] !== "undefined" &&
|
|
typeof compiledSchema.paths[path][method].requestBody.content["application/json"].schema !== "undefined"
|
|
) {
|
|
return compiledSchema.paths[path][method].requestBody.content["application/json"].schema;
|
|
}
|
|
return null;
|
|
};
|
|
|
|
export { getCompiledSchema, getValidationSchema };
|