Skip to content

Commit 328765b

Browse files
common: fix user agent strings
1 parent 494907c commit 328765b

32 files changed

Lines changed: 95 additions & 145 deletions

File tree

packages/bigquery/src/index.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ var Job = require('./job.js');
4343
*/
4444
var Table = require('./table.js');
4545

46-
var PKG = require('../package.json');
47-
4846
/**
4947
* In the following examples from this page and the other modules (`Dataset`,
5048
* `Table`, etc.), we are going to be using a dataset from
@@ -69,7 +67,7 @@ function BigQuery(options) {
6967
var config = {
7068
baseUrl: 'https://www.googleapis.com/bigquery/v2',
7169
scopes: ['https://www.googleapis.com/auth/bigquery'],
72-
userAgent: PKG.name + '/' + PKG.version
70+
packageJson: require('../package.json')
7371
};
7472

7573
common.Service.call(this, config, options);

packages/bigquery/test/index.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ var Service = require('@google-cloud/common').Service;
2626
var Table = require('../src/table.js');
2727
var util = require('@google-cloud/common').util;
2828

29-
var PKG = require('../package.json');
30-
3129
var fakeUtil = extend({}, util);
3230

3331
function FakeTable(a, b) {
@@ -118,7 +116,7 @@ describe('BigQuery', function() {
118116
assert.deepEqual(calledWith.scopes, [
119117
'https://www.googleapis.com/auth/bigquery'
120118
]);
121-
assert.strictEqual(calledWith.userAgent, PKG.name + '/' + PKG.version);
119+
assert.deepEqual(calledWith.packageJson, require('../package.json'));
122120
});
123121
});
124122

packages/bigtable/src/index.js

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,15 @@ var util = require('util');
2929

3030
/**
3131
* @private
32-
* @type {module:bigtable/instance}
32+
* @type {module:bigtable/cluster}
3333
*/
34-
var Instance = require('./instance.js');
34+
var Cluster = require('./cluster.js');
3535

3636
/**
3737
* @private
38-
* @type {module:bigtable/cluster}
38+
* @type {module:bigtable/instance}
3939
*/
40-
var Cluster = require('./cluster.js');
41-
42-
var PKG = require('../package.json');
40+
var Instance = require('./instance.js');
4341

4442
/**
4543
* @alias module:bigtable
@@ -319,7 +317,7 @@ function Bigtable(options) {
319317
'https://www.googleapis.com/auth/bigtable.data',
320318
'https://www.googleapis.com/auth/cloud-platform'
321319
],
322-
userAgent: PKG.name + '/' + PKG.version
320+
packageJson: require('../package.json')
323321
};
324322

325323
common.GrpcService.call(this, config, options);

packages/bigtable/test/index.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ var sinon = require('sinon').sandbox.create();
2626
var common = require('@google-cloud/common');
2727
var Cluster = require('../src/cluster.js');
2828
var Instance = require('../src/instance.js');
29-
var PKG = require('../package.json');
3029

3130
var fakeUtil = extend({}, common.util);
3231
var fakeStreamRouter = {
@@ -143,7 +142,7 @@ describe('Bigtable', function() {
143142
'https://www.googleapis.com/auth/cloud-platform'
144143
]);
145144

146-
assert.strictEqual(calledWith.userAgent, PKG.name + '/' + PKG.version);
145+
assert.deepEqual(calledWith.packageJson, require('../package.json'));
147146
});
148147

149148
it('should set the projectName', function() {

packages/common/src/grpc-service.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,11 @@ function GrpcService(config, options) {
161161

162162
this.grpcMetadata = new grpc.Metadata();
163163

164+
this.grpcMetadata.add('User-Agent', [
165+
config.packageJson.name.replace('@google-cloud', 'gcloud-node'),
166+
config.packageJson.version
167+
].join('/'));
168+
164169
if (config.grpcMetadata) {
165170
for (var prop in config.grpcMetadata) {
166171
if (config.grpcMetadata.hasOwnProperty(prop)) {

packages/common/src/service.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ function Service(config, options) {
5757
this.getCredentials = this.makeAuthenticatedRequest.getCredentials;
5858
this.globalInterceptors = arrify(options.interceptors_);
5959
this.interceptors = [];
60+
this.packageJson = config.packageJson;
6061
this.projectId = options.projectId;
6162
this.projectIdRequired = config.projectIdRequired !== false;
6263
}
@@ -114,6 +115,13 @@ Service.prototype.request = function(reqOpts, callback) {
114115

115116
delete reqOpts.interceptors_;
116117

118+
reqOpts.headers = extend({}, reqOpts.headers, {
119+
'User-Agent': [
120+
this.packageJson.name.replace('@google-cloud', 'gcloud-node'),
121+
this.packageJson.version
122+
].join('/')
123+
});
124+
117125
return this.makeAuthenticatedRequest(reqOpts, callback);
118126
};
119127

packages/common/src/util.js

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,6 @@ var streamEvents = require('stream-events');
3838
var through = require('through2');
3939
var uniq = require('array-uniq');
4040

41-
/** @const {object} @google-cloud/common's package.json file. */
42-
var PKG = require('../package.json');
43-
44-
/** @const {string} User agent. */
45-
var USER_AGENT = PKG.name + '/' + PKG.version;
46-
4741
var util = module.exports;
4842

4943
var errorMessage = format([
@@ -466,11 +460,6 @@ util.makeRequest = makeRequest;
466460
*/
467461
function decorateRequest(reqOpts, config) {
468462
config = config || {};
469-
reqOpts.headers = reqOpts.headers || {};
470-
471-
var headers = reqOpts.headers;
472-
var userAgent = headers['User-Agent'] || headers['user-agent'];
473-
headers['User-Agent'] = userAgent || config.userAgent || USER_AGENT;
474463

475464
if (is.object(reqOpts.qs)) {
476465
delete reqOpts.qs.autoPaginate;

packages/common/test/grpc-service.js

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ describe('GrpcService', function() {
9292
proto: {},
9393
service: 'Service',
9494
apiVersion: 'v1',
95+
packageJson: {
96+
name: '@google-cloud/service',
97+
version: '0.2.0'
98+
},
9599
grpcMetadata: {
96100
property: 'value'
97101
}
@@ -243,8 +247,20 @@ describe('GrpcService', function() {
243247
assert.strictEqual(calledWith[1], OPTIONS);
244248
});
245249

246-
it('should default grpcMetadata to empty metadata', function() {
247-
var fakeGrpcMetadata = {};
250+
it('should set grpcMetadata with the correct User Agent', function() {
251+
var userAgentAdded = false;
252+
253+
var fakeGrpcMetadata = {
254+
add: function(prop, value) {
255+
assert.strictEqual(prop, 'User-Agent');
256+
assert.strictEqual(value, [
257+
CONFIG.packageJson.name.replace('@google-cloud', 'gcloud-node'),
258+
CONFIG.packageJson.version
259+
].join('/'));
260+
261+
userAgentAdded = true;
262+
}
263+
};
248264

249265
GrpcMetadataOverride = function() {
250266
return fakeGrpcMetadata;
@@ -255,13 +271,22 @@ describe('GrpcService', function() {
255271

256272
var grpcService = new GrpcService(config, OPTIONS);
257273
assert.strictEqual(grpcService.grpcMetadata, fakeGrpcMetadata);
274+
assert.strictEqual(userAgentAdded, true);
258275
});
259276

260277
it('should create and localize grpcMetadata', function() {
278+
var userAgentAdded = false;
279+
261280
var fakeGrpcMetadata = {
262281
add: function(prop, value) {
282+
if (prop === 'User-Agent') {
283+
return; // Already tested.
284+
}
285+
263286
assert.strictEqual(prop, Object.keys(CONFIG.grpcMetadata)[0]);
264287
assert.strictEqual(value, CONFIG.grpcMetadata[prop]);
288+
289+
userAgentAdded = true;
265290
}
266291
};
267292

@@ -271,6 +296,7 @@ describe('GrpcService', function() {
271296

272297
var grpcService = new GrpcService(CONFIG, OPTIONS);
273298
assert.strictEqual(grpcService.grpcMetadata, fakeGrpcMetadata);
299+
assert.strictEqual(userAgentAdded, true);
274300
});
275301

276302
it('should localize maxRetries', function() {

packages/common/test/service.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@ describe('Service', function() {
3939
var CONFIG = {
4040
scopes: [],
4141
baseUrl: 'base-url',
42-
projectIdRequired: false
42+
projectIdRequired: false,
43+
packageJson: {
44+
name: '@google-cloud/service',
45+
version: '0.2.0'
46+
}
4347
};
4448

4549
var OPTIONS = {
@@ -129,6 +133,10 @@ describe('Service', function() {
129133
assert.deepEqual(service.interceptors, []);
130134
});
131135

136+
it('should localize package.json', function() {
137+
assert.strictEqual(service.packageJson, CONFIG.packageJson);
138+
});
139+
132140
it('should localize the projectId', function() {
133141
assert.strictEqual(service.projectId, OPTIONS.projectId);
134142
});
@@ -212,6 +220,18 @@ describe('Service', function() {
212220
service.request(reqOpts, assert.ifError);
213221
});
214222

223+
it('should add the User Agent', function(done) {
224+
service.makeAuthenticatedRequest = function(reqOpts) {
225+
assert.strictEqual(reqOpts.headers['User-Agent'], [
226+
CONFIG.packageJson.name.replace('@google-cloud', 'gcloud-node'),
227+
CONFIG.packageJson.version
228+
].join('/'));
229+
done();
230+
};
231+
232+
service.request(reqOpts, assert.ifError);
233+
});
234+
215235
describe('projectIdRequired', function() {
216236
describe('false', function() {
217237
it('should include the projectId', function(done) {

packages/common/test/util.js

Lines changed: 0 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1153,60 +1153,6 @@ describe('common/util', function() {
11531153
});
11541154

11551155
describe('decorateRequest', function() {
1156-
it('should keep user agent', function() {
1157-
var USER_AGENT = 'test/v1';
1158-
1159-
var reqOpts = {
1160-
a: 'b',
1161-
c: 'd',
1162-
headers: {
1163-
'User-Agent': USER_AGENT
1164-
}
1165-
};
1166-
1167-
var expectedReqOpts = extend({}, reqOpts, {
1168-
headers: {
1169-
'User-Agent': USER_AGENT
1170-
}
1171-
});
1172-
1173-
var decoratedReqOpts = util.decorateRequest(reqOpts);
1174-
assert.deepEqual(decoratedReqOpts, expectedReqOpts);
1175-
});
1176-
1177-
it('should add the user agent', function() {
1178-
var USER_AGENT = 'test/v2';
1179-
1180-
var reqOpts = { a: 'b', c: 'd' };
1181-
1182-
var expectedReqOpts = extend({}, reqOpts, {
1183-
headers: {
1184-
'User-Agent': USER_AGENT
1185-
}
1186-
});
1187-
1188-
var decoratedReqOpts = util.decorateRequest(reqOpts, {
1189-
userAgent: USER_AGENT
1190-
});
1191-
assert.deepEqual(decoratedReqOpts, expectedReqOpts);
1192-
});
1193-
1194-
it('should add the default user agent', function() {
1195-
var PKG = require('../package.json');
1196-
var USER_AGENT = PKG.name + '/' + PKG.version;
1197-
1198-
var reqOpts = { a: 'b', c: 'd' };
1199-
1200-
var expectedReqOpts = extend({}, reqOpts, {
1201-
headers: {
1202-
'User-Agent': USER_AGENT
1203-
}
1204-
});
1205-
1206-
var decoratedReqOpts = util.decorateRequest(reqOpts);
1207-
assert.deepEqual(decoratedReqOpts, expectedReqOpts);
1208-
});
1209-
12101156
it('should delete qs.autoPaginate', function() {
12111157
var decoratedReqOpts = util.decorateRequest({
12121158
qs: {

0 commit comments

Comments
 (0)