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
feat: set x-goog-user-project header, with quota_project from default credentials #829
Conversation
src/auth/googleauth.ts
Outdated
if (this.jsonContent && this.jsonContent.quota_project) { | ||
headers = Object.assign({}, headers, { | ||
'x-goog-user-project': this.jsonContent.quota_project, | ||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A comment about why it's not the other way around, i.e.
Object.assign({}, ..., headers)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If client.getRequestHeaders()
always returns an object, the whole Object.assign
can be removed and replaced with a simple assignment :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tend to agree that headers
should take precedence if set explicitly, I've updated the PR and added a comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've noticed a few bugs in our auth library in my time working on it, caused by passing an object by reference and than modifying the object, e.g., deleting a key.
I've been being defensive by creating shallow copies with Object.assign({})
, something worth thinking about in API design would be starting to Object.freeze
objects that we don't wish for users to modify, at which point it forces people to make copies, but you can pass the object around if you do not need to mutate it.
Codecov Report
@@ Coverage Diff @@
## master #829 +/- ##
=========================================
Coverage ? 84.93%
=========================================
Files ? 17
Lines ? 956
Branches ? 214
=========================================
Hits ? 812
Misses ? 86
Partials ? 58
Continue to review full report at Codecov.
|
If the
quota_project
parameter is set, kicks it along in the request headerx-goog-user-project
.