(index, req, res, middleware, callback, options, controller)
| 19147 | } |
| 19148 | |
| 19149 | function async_middleware(index, req, res, middleware, callback, options, controller) { |
| 19150 | |
| 19151 | if (res.success || res.headersSent || res.finished) { |
| 19152 | req.$total_route && req.$total_success(); |
| 19153 | callback = null; |
| 19154 | return; |
| 19155 | } |
| 19156 | |
| 19157 | var name = middleware[index++]; |
| 19158 | if (!name) |
| 19159 | return callback && callback(req, res); |
| 19160 | |
| 19161 | var item = F.routes.middleware[name]; |
| 19162 | if (!item) { |
| 19163 | F.error('Middleware not found: ' + name, null, req.uri); |
| 19164 | return async_middleware(index, req, res, middleware, callback, options, controller); |
| 19165 | } |
| 19166 | |
| 19167 | var output; |
| 19168 | var $now; |
| 19169 | |
| 19170 | if (CONF.logger) |
| 19171 | $now = Date.now(); |
| 19172 | |
| 19173 | if (item.$newversion) { |
| 19174 | var opt = req.$total_middleware; |
| 19175 | if (!index || !opt) { |
| 19176 | opt = req.$total_middleware = new MiddlewareOptions(); |
| 19177 | opt.req = req; |
| 19178 | opt.res = res; |
| 19179 | opt.middleware = middleware; |
| 19180 | opt.options = options || EMPTYOBJECT; |
| 19181 | opt.controller = controller; |
| 19182 | opt.callback2 = callback; |
| 19183 | opt.next = function(err) { |
| 19184 | CONF.logger && F.ilogger(getLoggerMiddleware(name), req, $now); |
| 19185 | var mid = req.$total_middleware; |
| 19186 | if (err === false) { |
| 19187 | req.$total_route && req.$total_success(); |
| 19188 | req.$total_middleware = null; |
| 19189 | callback = null; |
| 19190 | } else if (err instanceof Error || err instanceof ErrorBuilder) { |
| 19191 | res.throw500(err); |
| 19192 | req.$total_middleware = null; |
| 19193 | callback = null; |
| 19194 | } else |
| 19195 | async_middleware(mid.index, mid.req, mid.res, mid.middleware, mid.callback2, mid.options, mid.controller); |
| 19196 | }; |
| 19197 | } |
| 19198 | |
| 19199 | opt.index = index; |
| 19200 | output = item(opt); |
| 19201 | |
| 19202 | } else { |
| 19203 | output = item.call(framework, req, res, function(err) { |
| 19204 | CONF.logger && F.ilogger(getLoggerMiddleware(name), req, $now); |
| 19205 | if (err === false) { |
| 19206 | req.$total_route && req.$total_success(); |
no test coverage detected