3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-16 22:21:51 +00:00

Fixes to docs api endpoints

This commit is contained in:
Dragory 2020-07-06 02:01:16 +03:00
parent 680a70e464
commit eb703face3
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1

View file

@ -1,10 +1,8 @@
import express from "express"; import express from "express";
import { availablePlugins } from "../plugins/availablePlugins"; import { guildPlugins } from "../plugins/availablePlugins";
import { ZeppelinPluginClass } from "../plugins/ZeppelinPluginClass";
import { notFound } from "./responses"; import { notFound } from "./responses";
import { dropPropertiesByName, indentLines } from "../utils"; import { indentLines } from "../utils";
import { IPluginCommandConfig, Plugin, pluginUtils } from "knub"; import { getPluginName } from "knub/dist/plugins/pluginUtils";
import { parseParameters } from "knub-command-manager";
function formatConfigSchema(schema) { function formatConfigSchema(schema) {
if (schema._tag === "InterfaceType" || schema._tag === "PartialType") { if (schema._tag === "InterfaceType" || schema._tag === "PartialType") {
@ -33,14 +31,14 @@ function formatConfigSchema(schema) {
} }
export function initDocs(app: express.Express) { export function initDocs(app: express.Express) {
const docsPlugins = availablePlugins.filter(pluginClass => pluginClass.showInDocs); const docsPlugins = guildPlugins.filter(pluginClass => pluginClass.showInDocs);
app.get("/docs/plugins", (req: express.Request, res: express.Response) => { app.get("/docs/plugins", (req: express.Request, res: express.Response) => {
res.json( res.json(
docsPlugins.map(pluginClass => { docsPlugins.map(pluginClass => {
const thinInfo = pluginClass.pluginInfo ? { prettyName: pluginClass.pluginInfo.prettyName } : {}; const thinInfo = pluginClass.info ? { prettyName: pluginClass.info.prettyName } : {};
return { return {
name: pluginClass.pluginName, name: pluginClass.info,
info: thinInfo, info: thinInfo,
}; };
}), }),
@ -48,40 +46,26 @@ export function initDocs(app: express.Express) {
}); });
app.get("/docs/plugins/:pluginName", (req: express.Request, res: express.Response) => { app.get("/docs/plugins/:pluginName", (req: express.Request, res: express.Response) => {
const pluginClass = docsPlugins.find(obj => obj.pluginName === req.params.pluginName); const plugin = docsPlugins.find(obj => getPluginName(obj) === req.params.pluginName);
if (!pluginClass) { if (!plugin) {
return notFound(res); return notFound(res);
} }
const decoratorCommands = pluginUtils.getPluginDecoratorCommands(pluginClass as typeof Plugin) || []; const name = getPluginName(plugin);
const commands = decoratorCommands.map(cmd => { const info = plugin.info || {};
const trigger = typeof cmd.trigger === "string" ? cmd.trigger : cmd.trigger.source;
const parameters = cmd.parameters
? typeof cmd.parameters === "string"
? parseParameters(cmd.parameters)
: cmd.parameters
: [];
const config: IPluginCommandConfig = cmd.config || {};
if (config.overloads) {
config.overloads = config.overloads.map(overload => {
return typeof overload === "string" ? parseParameters(overload) : overload;
});
}
return { const commands = plugin.commands.map(cmd => ({
trigger, trigger: cmd.trigger,
parameters, signature: cmd.signature,
config, config: cmd.config,
}; }));
});
const defaultOptions = (pluginClass as typeof ZeppelinPluginClass).getStaticDefaultOptions(); const defaultOptions = plugin.defaultOptions;
const configSchema = plugin.configSchema && formatConfigSchema(plugin.configSchema);
const configSchema = pluginClass.configSchema && formatConfigSchema(pluginClass.configSchema);
res.json({ res.json({
name: pluginClass.pluginName, name,
info: pluginClass.pluginInfo || {}, info,
configSchema, configSchema,
defaultOptions, defaultOptions,
commands, commands,