@@ -138,6 +138,7 @@ var GRPC_ERROR_CODE_TO_HTTP = {
138138 *
139139 * @param {object } config - Configuration object.
140140 * @param {string } config.baseUrl - The base URL to make API requests to.
141+ * @param {object } config.grpcMetadata - Metadata to send with every request.
141142 * @param {string[] } config.scopes - The scopes required for the request.
142143 * @param {string } config.service - The name of the service.
143144 * @param {object= } config.protoServices - Directly provide the required proto
@@ -185,6 +186,12 @@ function GrpcService(config, options) {
185186 service . baseUrl = protoConfig . baseUrl ;
186187 }
187188 } ) ;
189+
190+ this . callCredentials = [ ] ;
191+
192+ if ( config . grpcMetadata ) {
193+ this . setGrpcMetadata_ ( config . grpcMetadata ) ;
194+ }
188195}
189196
190197nodeutil . inherits ( GrpcService , Service ) ;
@@ -635,18 +642,27 @@ GrpcService.structToObj_ = function(struct) {
635642 * @param {?error } callback.err - An error getting an auth client.
636643 */
637644GrpcService . prototype . getGrpcCredentials_ = function ( callback ) {
645+ var self = this ;
646+
638647 this . authClient . getAuthClient ( function ( err , authClient ) {
639648 if ( err ) {
640649 callback ( err ) ;
641650 return ;
642651 }
643652
644- var credentials = grpc . credentials . combineChannelCredentials (
653+ var callCredentialObjects = [
645654 grpc . credentials . createSsl ( ) ,
646655 grpc . credentials . createFromGoogleCredential ( authClient )
656+ ] ;
657+
658+ callCredentialObjects = callCredentialObjects . concat ( self . callCredentials ) ;
659+
660+ var grpcCredentials = grpc . credentials . combineChannelCredentials . apply (
661+ null ,
662+ callCredentialObjects
647663 ) ;
648664
649- callback ( null , credentials ) ;
665+ callback ( null , grpcCredentials ) ;
650666 } ) ;
651667} ;
652668
@@ -717,5 +733,19 @@ GrpcService.prototype.getService_ = function(protoOpts) {
717733 return service ;
718734} ;
719735
736+ GrpcService . prototype . setGrpcMetadata_ = function ( metadata ) {
737+ var cc = grpc . credentials . createFromMetadataGenerator ( function ( _ , cb ) {
738+ var grpcMetadata = new grpc . Metadata ( ) ;
739+
740+ for ( var prop in metadata ) {
741+ grpcMetadata . add ( prop , metadata [ prop ] ) ;
742+ }
743+
744+ cb ( null , grpcMetadata ) ;
745+ } ) ;
746+
747+ this . callCredentials . push ( cc ) ;
748+ } ;
749+
720750module . exports = GrpcService ;
721751module . exports . GRPC_ERROR_CODE_TO_HTTP = GRPC_ERROR_CODE_TO_HTTP ;
0 commit comments