add createContext()

master
TJ Holowaychuk 2013-08-18 11:14:01 -07:00
parent aa8475dc78
commit 8ccfc14e88
1 changed files with 20 additions and 7 deletions

View File

@ -37,11 +37,7 @@ function Application() {
this.poweredBy = true;
this.jsonSpaces = 2;
this.middleware = [];
this._Context = function Context(app, req, res){
this.app = app;
this.req = req;
this.res = res;
}
this.Context = createContext();
this.context(context);
}
@ -101,7 +97,7 @@ app.use = function(fn){
*/
app.context = function(obj){
var ctx = this._Context.prototype;
var ctx = this.Context.prototype;
Object.getOwnPropertyNames(obj).forEach(function(name){
var descriptor = Object.getOwnPropertyDescriptor(obj, name);
Object.defineProperty(ctx, name, descriptor);
@ -123,7 +119,7 @@ app.callback = function(){
var self = this;
return function(req, res){
var ctx = new self._Context(self, req, res);
var ctx = new self.Context(self, req, res);
function done(err) {
if (err) ctx.error(err);
@ -198,9 +194,26 @@ function respond(next){
/**
* Default downstream middleware.
*
* @api private
*/
function *downstream() {
this.status = 200;
if (this.app.poweredBy) this.set('X-Powered-By', 'koa');
}
/**
* Create a new `Context` constructor.
*
* @return {Function}
* @api private
*/
function createContext() {
return function Context(app, req, res){
this.app = app;
this.req = req;
this.res = res;
}
}