diff --git a/node_modules/frontdoor/lib/section.js b/node_modules/frontdoor/lib/section.js index 1e8edbfa..1e027ef0 100644 --- a/node_modules/frontdoor/lib/section.js +++ b/node_modules/frontdoor/lib/section.js @@ -15,6 +15,7 @@ module.exports = function Section(name, description, types) { var self = this; this.middlewares = []; + this.globals = []; this.errorHandlers = []; this.name = name; @@ -45,10 +46,22 @@ module.exports = function Section(name, description, types) { }); }; + /** + * Insert global middleware(s) for this section: The parent section is + * always an empty container that delegates to it's sub-sections, and + * executes all the middelwares for that section. + * + * This method allows us to inject a "global" middleware that is inserted + * *after* decodeParams and *before* all other middelwares. + */ + this.global = function( middleware ){ + this.globals.push.apply(this.globals, flatten(middleware)); + }; + this.use = function(middleware) { this.middlewares.push.apply(this.middlewares, flatten(middleware)); }; - + this.error = function(middleware) { this.errorHandlers.push.apply(this.errorHandlers, flatten(middleware)); }; @@ -70,6 +83,13 @@ module.exports = function Section(name, description, types) { return section; }; + this.mount = function(name, section) { + if (!sections[name]) + sections[name] = []; + + sections[name].push(section); + }; + this._rootHandler = function(req, res) { this.handle(req, res, function(err) { if (err) { @@ -105,7 +125,7 @@ module.exports = function Section(name, description, types) { var method = req.method.toLowerCase(); if (methods.indexOf(method) == -1) return next(); - + var handler = this.match(req, path, method); if (!handler) return next(); @@ -118,6 +138,9 @@ module.exports = function Section(name, description, types) { handler = handler.parent; } + if (this.globals.length) + middleware.splice.apply( middleware, [1, 0].concat( this.globals ) ); + var i = 0; function processNext() { handler = middleware[i++]; diff --git a/package.json b/package.json index 3e9beccb..3deee154 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.infer": "#cfec494a3c", "c9.ide.language.jsonalyzer": "#c253f093a0", - "c9.ide.collab": "#aeaa248d54", + "c9.ide.collab": "#f0e96dd2cf", "c9.ide.local": "#a9703b630c", "c9.ide.find": "#6cc6d3379d", "c9.ide.find.infiles": "#72582de3cd", @@ -91,8 +91,8 @@ "c9.ide.imgeditor": "#ed89162aa7", "c9.ide.immediate": "#6845a93705", "c9.ide.installer": "#3e6f7a72c9", - "c9.ide.mount": "#74f50c40a7", - "c9.ide.navigate": "#055a1f1a80", + "c9.ide.mount": "#20339aeeaf", + "c9.ide.navigate": "#f358997d93", "c9.ide.newresource": "#f1f0624768", "c9.ide.openfiles": "#28a4f5af16", "c9.ide.preview": "#0bd8dd6e8c", diff --git a/plugins/c9.core/api.js b/plugins/c9.core/api.js index 4a29a4b0..65e049f0 100644 --- a/plugins/c9.core/api.js +++ b/plugins/c9.core/api.js @@ -22,7 +22,7 @@ define(function(require, exports, module) { /***** Methods *****/ - var REST_METHODS = ["get", "post", "put", "delete"]; + var REST_METHODS = ["get", "post", "put", "delete", "patch"]; function wrapMethod(urlPrefix, method) { return function(url, options, callback) { @@ -33,7 +33,7 @@ define(function(require, exports, module) { } var headers = options.headers = options.headers || {}; headers.Accept = headers.Accept || "application/json"; - options.method = method; + options.method = method.toUpperCase(); if (!options.timeout) options.timeout = 60000;