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

Get all headers 3992 #170

Closed
wants to merge 2 commits into from

Conversation

iankronquist
Copy link
Contributor

Thanks @chrisdickinson for the pointer to this bug.

@iankronquist
Copy link
Contributor Author

Github doesn't automatically link to issues in the node.js repo. Here's a link to the issue in question:
nodejs/node-v0.x-archive#3992

var headers = response.getAllHeaders();



Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there might be two too many newlines here.

@iankronquist
Copy link
Contributor Author

@chrisdickinson Fixed documentation formatting

if (!this._headers)
return;
else
return this._headers;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice to return a copy of headers instead of the full object -- something like util.extend({}, this._headers).

@iankronquist
Copy link
Contributor Author

@chrisdickinson Fixed according to your advice.

@@ -380,6 +380,15 @@ Example:

var contentType = response.getHeader('content-type');

### response.getAllHeaders()

Reads out all headers that are already been queued but not sent to the client.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should probably be something like:

Returns the headers which have already been queued but not yet sent to the client.

Test a getAllHeaders function. It should return an object representing
the headers in a request.
@iankronquist
Copy link
Contributor Author

I made changes according to @phpnode's and @bnoordhuis' comments. I then rebased to keep up with v0.12. r?

@chrisdickinson
Copy link
Contributor

Apologies for dragging my feet on this a bit: this LGTM. If there are no objections I'll merge tomorrow afternoon (by 5PM PST).

@iankronquist
Copy link
Contributor Author

@chrisdickinson No worries, I'm glad I could pitch in.

@iankronquist
Copy link
Contributor Author

@chrisdickinson Can this be merged?

@iankronquist
Copy link
Contributor Author

ping @chrisdickinson

}
for (var field in expected) {
assert.equal(headers[field], expected[field]);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the late comment, but wouldn't this omit the added-by-default headers Date and Connection?

@iankronquist
Copy link
Contributor Author

@chrisdickinson updated according to your comments.

@iankronquist
Copy link
Contributor Author

ping @chrisdickinson

});
response.resume();
});
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

var headers;
var rando = Math.random();
var expected = util._extend({}, {
  'X-Random-Thing': rando,
  /* other values */
});
var server = http.createServer(function(req, res) {
  res.setHeader('X-Random-Thing', rando); 
  headers = res.getAllHeaders();
  res.end('hello');
  assert.strictEqual(res.getAllHeaders(), null);
});
server.listen(common.PORT, function() {
  http.get({port: common.PORT}, function(resp) {
    assert.deepEqual(response.headers, expected);
    server.close();
  });
});

@rvagg
Copy link
Member

rvagg commented Jan 27, 2015

@chrisdickinson do you require further action on this? Is your last comment a request for a test case along the lines of your code block? @iankronquist if this was to be merged it'd probably need to be a single commit so you might want to squash. The license block should also be removed from the test file and it now needs to go in to test/parallel/.

@chrisdickinson
Copy link
Contributor

Yes, that last comment is the test case that should be added and made to pass for this to be able to go in. Re: commits: I don't mind squashing those myself on merge.

@iankronquist
Copy link
Contributor Author

@rvagg I'll go ahead and do that.

Users should not have to access private attributes like res._headers in
order to get all the headers in a request. Define a method getAllHeaders
to return an object which is a copy of re._headers

Fixes issue nodejs#3992
@iankronquist
Copy link
Contributor Author

... and squashed like a bug. Let me know if you need anything else cleaned up.

eti-p-doray pushed a commit to eti-p-doray/node that referenced this pull request May 28, 2024
Use TypedArray::kMaxByteLength instead.
syg pushed a commit to syg/node that referenced this pull request Jun 20, 2024
Use TypedArray::kMaxByteLength instead.
eti-p-doray pushed a commit to eti-p-doray/node that referenced this pull request Aug 28, 2024
Use TypedArray::kMaxByteLength instead.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
http Issues or PRs related to the http subsystem. semver-minor PRs that contain new features and should be released in the next minor version.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants