Skip to content

Commit

Permalink
Move state.js out. For #1877
Browse files Browse the repository at this point in the history
  • Loading branch information
Eran Hammer committed Aug 22, 2014
1 parent dcf6a1d commit 8c702cd
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 1,038 deletions.
2 changes: 1 addition & 1 deletion lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ exports.Server = require('./server');
exports.Pack = require('./pack');

exports.state = {
prepareValue: require('./state').prepareValue
prepareValue: require('statehood').prepareValue
};

exports.createServer = function () {
Expand Down
4 changes: 2 additions & 2 deletions lib/response/headers.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

var Boom = require('boom');
var Items = require('items');
var State = require('../state');
var Statehood = require('statehood');
var Auth = null; // Delay load due to circular dependencies


Expand Down Expand Up @@ -224,7 +224,7 @@ internals.state = function (response, request, next) {
return next();
}

State.generateSetCookieHeader(states, request.server, function (err, header) {
Statehood.format(states, request.server, function (err, header) {

if (err) {
return next(err);
Expand Down
48 changes: 45 additions & 3 deletions lib/route.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
// Load modules

var Catbox = require('catbox');
var Joi = require('joi');
var Hoek = require('hoek');
var Joi = require('joi');
var Statehood = require('statehood');
var Schema = require('./schema');
var Request = require('./request');
var State = require('./state');
var Auth = require('./auth');
var Payload = require('./payload');
var Validation = require('./validation');
Expand Down Expand Up @@ -142,7 +142,7 @@ internals.Route.prototype.lifecycle = function () {
// 'onRequest'

if (this.server.settings.state.cookies.parse) {
cycle.push(State.parseCookies);
cycle.push(internals.state);
}

cycle.push('onPreAuth');
Expand Down Expand Up @@ -540,3 +540,45 @@ internals.compareMixed = function (aSegment, bSegment, p) {
}
}
};


internals.state = function (request, next) {

request.state = {};

var req = request.raw.req;
var cookies = req.headers.cookie;
if (!cookies) {
return next();
}

var definitions = request.server._stateDefinitions;
var settings = request.server.settings.state;

Statehood.parse(cookies, definitions, settings, function (err, state, invalids) {

request.state = state;

var names = Object.keys(invalids);
for (var i = 0, il = names.length; i < il; ++i) {
var name = names[i];
var definition = definitions[name];

if (definition &&
definition.clearInvalid !== undefined ? definition.clearInvalid : settings.cookies.clearInvalid) {

request._clearState(name);
}

// failAction: 'error', 'log', 'ignore'

var failAction = (definition && definition.failAction !== undefined ? definition.failAction
: settings.cookies.failAction);
if (failAction !== 'ignore') {
request.log(['hapi', 'state', 'error'], invalids[name]);
}
}

return next(err);
});
};
Loading

0 comments on commit 8c702cd

Please sign in to comment.