Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions lib/request.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
var Events = require('events');
var Stream = require('stream');
var Url = require('url');
var Accept = require('accept');
var Boom = require('boom');
var Hoek = require('hoek');
var Items = require('items');
var Negotiator = require('negotiator');
var Qs = require('qs');
var Response = require('./response');
var Handler = require('./handler');
Expand Down Expand Up @@ -68,14 +68,13 @@ exports = module.exports = internals.Request = function (server, req, res, optio
this.pre = {}; // Pre raw values
this.responses = {}; // Pre response values

var accept = new Negotiator(req);
this.info = {
received: now,
remoteAddress: req.connection ? req.connection.remoteAddress : '',
remotePort: req.connection ? req.connection.remotePort : '',
referrer: req.headers.referrer || req.headers.referer || '',
host: req.headers.host ? req.headers.host.replace(/\s/g, '') : '',
acceptEncoding: accept.encoding(['gzip', 'deflate'])
acceptEncoding: Accept.encoding(this.headers['accept-encoding'], ['identity', 'gzip', 'deflate'])
};

this.info.hostname = this.info.host.split(':')[0];
Expand Down
1 change: 1 addition & 0 deletions lib/response/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ internals.transmit = function (response, callback) {
var source = response._payload;
var mime = Mimos.type(response.headers['content-type'] || 'hapi/unknown');
var encoding = (mime.compressible && !response.headers['content-encoding'] && response._isPayloadSupported() ? request.info.acceptEncoding : null);
encoding = (encoding === 'identity' ? null : encoding);

// Range

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"node": ">=0.10.32"
},
"dependencies": {
"accept": "1.x.x",
"boom": "^2.5.x",
"bossy": "1.x.x",
"call": "1.x.x",
Expand All @@ -40,7 +41,6 @@
"wreck": "5.x.x",

"lru-cache": "2.5.x",
"negotiator": "0.4.x",
"semver": "2.3.x"
},
"devDependencies": {
Expand Down
20 changes: 10 additions & 10 deletions test/gzip.js
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ describe('Payload', function () {
Wreck.post(uri, { headers: { 'accept-encoding': '*' }, payload: data }, function (err, res, body) {

expect(err).to.not.exist;
expect(body).to.equal(zdata);
expect(body).to.equal(data);
done();
});
});
Expand All @@ -204,7 +204,7 @@ describe('Payload', function () {
Wreck.get(uri, { headers: { 'accept-encoding': '*' } }, function (err, res, body) {

expect(err).to.not.exist;
expect(body).to.equal(zdata);
expect(body).to.equal(data);
done();
});
});
Expand All @@ -229,39 +229,39 @@ describe('Payload', function () {
});
});

it('returns a gzip response on a post request when accept-encoding: gzip,q=1; deflate,q=.5 is requested', function (done) {
it('returns a gzip response on a post request when accept-encoding: gzip;q=1, deflate;q=0.5 is requested', function (done) {

Wreck.post(uri, { headers: { 'accept-encoding': 'gzip,q=1; deflate,q=.5' }, payload: data }, function (err, res, body) {
Wreck.post(uri, { headers: { 'accept-encoding': 'gzip;q=1, deflate;q=0.5' }, payload: data }, function (err, res, body) {

expect(err).to.not.exist;
expect(body).to.equal(zdata);
done();
});
});

it('returns a gzip response on a get request when accept-encoding: gzip,q=1; deflate,q=.5 is requested', function (done) {
it('returns a gzip response on a get request when accept-encoding: gzip;q=1, deflate;q=0.5 is requested', function (done) {

Wreck.get(uri, { headers: { 'accept-encoding': 'gzip,q=1; deflate,q=.5' } }, function (err, res, body) {
Wreck.get(uri, { headers: { 'accept-encoding': 'gzip;q=1, deflate;q=0.5' } }, function (err, res, body) {

expect(err).to.not.exist;
expect(body).to.equal(zdata);
done();
});
});

it('returns a deflate response on a post request when accept-encoding: deflate,q=1; gzip,q=.5 is requested', function (done) {
it('returns a deflate response on a post request when accept-encoding: deflate;q=1, gzip;q=0.5 is requested', function (done) {

Wreck.post(uri, { headers: { 'accept-encoding': 'deflate,q=1; gzip,q=.5' }, payload: data }, function (err, res, body) {
Wreck.post(uri, { headers: { 'accept-encoding': 'deflate;q=1, gzip;q=0.5' }, payload: data }, function (err, res, body) {

expect(err).to.not.exist;
expect(body).to.equal(ddata);
done();
});
});

it('returns a deflate response on a get request when accept-encoding: deflate,q=1; gzip,q=.5 is requested', function (done) {
it('returns a deflate response on a get request when accept-encoding: deflate;q=1, gzip;q=0.5 is requested', function (done) {

Wreck.get(uri, { headers: { 'accept-encoding': 'deflate,q=1; gzip,q=.5' } }, function (err, res, body) {
Wreck.get(uri, { headers: { 'accept-encoding': 'deflate;q=1, gzip;q=0.5' } }, function (err, res, body) {

expect(err).to.not.exist;
expect(body).to.equal(ddata);
Expand Down
6 changes: 3 additions & 3 deletions test/proxy.js
Original file line number Diff line number Diff line change
Expand Up @@ -1239,7 +1239,7 @@ describe('Proxy', function () {
});
});

it('retails accept-encoding header', function (done) {
it('retains accept-encoding header', function (done) {

var profile = function (request, reply) {

Expand All @@ -1253,10 +1253,10 @@ describe('Proxy', function () {
var server = new Hapi.Server();
server.route({ method: 'GET', path: '/', handler: { proxy: { host: 'localhost', port: upstream.info.port, acceptEncoding: true, passThrough: true } } });

server.inject({ url: '/', headers: { 'accept-encoding': '*/*' } }, function (res) {
server.inject({ url: '/', headers: { 'accept-encoding': 'something' } }, function (res) {

expect(res.statusCode).to.equal(200);
expect(res.payload).to.equal('*/*');
expect(res.payload).to.equal('something');
done();
});
});
Expand Down