Skip to content

Commit ed92594

Browse files
committed
Reintroduce x-goog-api-client for common-grpc
This introduces this header for non-gapic APIs. Revise of #2020.
1 parent f7d4b05 commit ed92594

2 files changed

Lines changed: 27 additions & 13 deletions

File tree

packages/common-grpc/src/service.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ var duplexify = require('duplexify');
2525
var extend = require('extend');
2626
var googleProtoFiles = require('google-proto-files');
2727
var grpc = require('grpc');
28+
var grpcVersion = require('grpc/package.json').version;
2829
var is = require('is');
2930
var nodeutil = require('util');
3031
var path = require('path');
@@ -178,6 +179,11 @@ function GrpcService(config, options) {
178179

179180
this.grpcMetadata = new grpc.Metadata();
180181

182+
this.grpcMetadata.add('x-goog-api-client', [
183+
'gl-node/' + process.versions.node,
184+
'gccl/' + (config.packageJson.version || ''),
185+
'grpc/' + grpcVersion
186+
].join(' '));
181187
if (config.grpcMetadata) {
182188
for (var prop in config.grpcMetadata) {
183189
if (config.grpcMetadata.hasOwnProperty(prop)) {

packages/common-grpc/test/service.js

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ var duplexify = require('duplexify');
2121
var extend = require('extend');
2222
var googleProtoFiles = require('google-proto-files');
2323
var grpc = require('grpc');
24+
var grpcVersion = require('grpc/package.json').version;
2425
var is = require('is');
2526
var path = require('path');
2627
var proxyquire = require('proxyquire');
@@ -273,33 +274,40 @@ describe('GrpcService', function() {
273274
});
274275

275276
it('should default grpcMetadata to empty metadata', function() {
276-
var fakeGrpcMetadata = {};
277+
var fakeGrpcMetadata = {
278+
'x-goog-api-client': [
279+
'gl-node/' + process.versions.node,
280+
'gccl/' + CONFIG.packageJson.version,
281+
'grpc/' + grpcVersion].join(' ')
282+
};
277283

278-
GrpcMetadataOverride = function() {
279-
return fakeGrpcMetadata;
284+
GrpcMetadataOverride = function() {};
285+
GrpcMetadataOverride.prototype.add = function(prop, val) {
286+
this[prop] = val;
280287
};
281288

282289
var config = extend({}, CONFIG);
283290
delete config.grpcMetadata;
284291

285292
var grpcService = new GrpcService(config, OPTIONS);
286-
assert.strictEqual(grpcService.grpcMetadata, fakeGrpcMetadata);
293+
assert.deepEqual(grpcService.grpcMetadata, fakeGrpcMetadata);
287294
});
288295

289296
it('should create and localize grpcMetadata', function() {
290-
var fakeGrpcMetadata = {
291-
add: function(prop, value) {
292-
assert.strictEqual(prop, Object.keys(CONFIG.grpcMetadata)[0]);
293-
assert.strictEqual(value, CONFIG.grpcMetadata[prop]);
294-
}
295-
};
297+
var fakeGrpcMetadata = extend({
298+
'x-goog-api-client': [
299+
'gl-node/' + process.versions.node,
300+
'gccl/' + CONFIG.packageJson.version,
301+
'grpc/' + grpcVersion].join(' ')
302+
}, CONFIG.grpcMetadata);
296303

297-
GrpcMetadataOverride = function() {
298-
return fakeGrpcMetadata;
304+
GrpcMetadataOverride = function() {};
305+
GrpcMetadataOverride.prototype.add = function(prop, val) {
306+
this[prop] = val;
299307
};
300308

301309
var grpcService = new GrpcService(CONFIG, OPTIONS);
302-
assert.strictEqual(grpcService.grpcMetadata, fakeGrpcMetadata);
310+
assert.deepEqual(grpcService.grpcMetadata, fakeGrpcMetadata);
303311
});
304312

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

0 commit comments

Comments
 (0)