Skip to content

Commit

Permalink
feat: allow plugins to define api routes
Browse files Browse the repository at this point in the history
via new plugin hook static:api.routes
  • Loading branch information
julianlam committed Oct 14, 2020
1 parent a4ba238 commit 9dd3cc0
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 17 deletions.
2 changes: 1 addition & 1 deletion src/routes/index.js
Expand Up @@ -112,7 +112,7 @@ module.exports = async function (app, middleware) {

await plugins.reloadRoutes({ router: router });
await authRoutes.reloadRoutes({ router: router });
writeRoutes.reload({ router: router });
await writeRoutes.reload({ router: router });
addCoreRoutes(app, router, middleware);

winston.info('Routes added');
Expand Down
32 changes: 16 additions & 16 deletions src/routes/write/index.js
@@ -1,12 +1,14 @@
'use strict';

const nconf = require('nconf');
const winston = require('winston');
const plugins = require('../../plugins');
const middleware = require('../../middleware');
const helpers = require('../../controllers/helpers');

const Write = module.exports;

Write.reload = (params) => {
Write.reload = async (params) => {
const router = params.router;

router.use('/api/v3', function (req, res, next) {
Expand Down Expand Up @@ -40,19 +42,17 @@ Write.reload = (params) => {
});
});

// This router is reserved exclusively for plugins to add their own routes into the write api plugin. Confused yet? :trollface:
// var customRouter = require('express').Router();
// plugins.fireHook('filter:plugin.write-api.routes', {
// router: customRouter,
// apiMiddleware: apiMiddleware,
// middleware: coreMiddleware,
// errorHandler: errorHandler
// }, function (err, payload) {
// router.use('/', payload.router);

// router.use(function(req, res) {
// // Catch-all
// errorHandler.respond(404, res);
// });
// });
/**
* Plugins can add routes to the Write API by attaching a listener to the
* below hook. The hooks added to the passed-in router will be mounted to
* `/api/v3/plugins`.
*/
const pluginRouter = require('express').Router();
await plugins.fireHook('static:api.routes', {
router: pluginRouter,
middleware,
helpers,
});
winston.info(`[api] Adding ${pluginRouter.stack.length} route(s) to \`api/v3/plugins\``);
router.use('/api/v3/plugins', pluginRouter);
};

0 comments on commit 9dd3cc0

Please sign in to comment.