Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve error message on not 2xx code #39

Merged
merged 1 commit into from Feb 6, 2015
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 3 additions & 2 deletions index.js
Expand Up @@ -11,6 +11,7 @@ var read = require('read-all-stream');
var timeout = require('timed-out');
var prependHttp = require('prepend-http');
var lowercaseKeys = require('lowercase-keys');
var status = require('statuses');

function got(url, opts, cb) {
if (typeof opts === 'function') {
Expand Down Expand Up @@ -65,7 +66,7 @@ function got(url, opts, cb) {
var res = response;

// redirect
if (statusCode >= 300 && statusCode < 400 && 'location' in res.headers) {
if (status.redirect[statusCode] && 'location' in res.headers) {
res.resume(); // Discard response

if (++redirectCount > 10) {
Expand All @@ -85,7 +86,7 @@ function got(url, opts, cb) {

if (statusCode < 200 || statusCode > 299) {
read(res, encoding, function (error, data) {
var err = error || new Error('Couldn\'t connect to ' + url + '.');
var err = error || new Error(url + ' response code is ' + statusCode + ' (' + status[statusCode] + ')');
err.code = statusCode;
cb(err, data, response);
});
Expand Down
1 change: 1 addition & 0 deletions package.json
Expand Up @@ -45,6 +45,7 @@
"object-assign": "^2.0.0",
"prepend-http": "^1.0.0",
"read-all-stream": "^1.0.0",
"statuses": "^1.2.1",
"timed-out": "^2.0.0"
},
"devDependencies": {
Expand Down
29 changes: 29 additions & 0 deletions test/test-error.js
@@ -0,0 +1,29 @@
'use strict';
var tape = require('tape');
var got = require('../');
var server = require('./server.js');
var s = server.createServer();

s.on('/', function (req, res) {
res.statusCode = 404;
res.end('not');
});

tape('setup', function (t) {
s.listen(s.port, function () {
t.end();
});
});

tape('error message', function (t) {
got(s.url, function (err) {
t.ok(err);
t.equal(err.message, 'http://localhost:6767 response code is 404 (Not Found)');
t.end();
});
});

tape('cleanup', function (t) {
s.close();
t.end();
});