@@ -138,6 +138,7 @@ var GRPC_ERROR_CODE_TO_HTTP = {
138
138
*
139
139
* @param {object } config - Configuration object.
140
140
* @param {string } config.baseUrl - The base URL to make API requests to.
141
+ * @param {object } config.grpcMetadata - Metadata to send with every request.
141
142
* @param {string[] } config.scopes - The scopes required for the request.
142
143
* @param {string } config.service - The name of the service.
143
144
* @param {object= } config.protoServices - Directly provide the required proto
@@ -185,6 +186,12 @@ function GrpcService(config, options) {
185
186
service . baseUrl = protoConfig . baseUrl ;
186
187
}
187
188
} ) ;
189
+
190
+ this . callCredentials = [ ] ;
191
+
192
+ if ( config . grpcMetadata ) {
193
+ this . setGrpcMetadata_ ( config . grpcMetadata ) ;
194
+ }
188
195
}
189
196
190
197
nodeutil . inherits ( GrpcService , Service ) ;
@@ -646,18 +653,27 @@ GrpcService.structToObj_ = function(struct) {
646
653
* @param {?error } callback.err - An error getting an auth client.
647
654
*/
648
655
GrpcService . prototype . getGrpcCredentials_ = function ( callback ) {
656
+ var self = this ;
657
+
649
658
this . authClient . getAuthClient ( function ( err , authClient ) {
650
659
if ( err ) {
651
660
callback ( err ) ;
652
661
return ;
653
662
}
654
663
655
- var credentials = grpc . credentials . combineChannelCredentials (
664
+ var callCredentialObjects = [
656
665
grpc . credentials . createSsl ( ) ,
657
666
grpc . credentials . createFromGoogleCredential ( authClient )
667
+ ] ;
668
+
669
+ callCredentialObjects = callCredentialObjects . concat ( self . callCredentials ) ;
670
+
671
+ var grpcCredentials = grpc . credentials . combineChannelCredentials . apply (
672
+ null ,
673
+ callCredentialObjects
658
674
) ;
659
675
660
- callback ( null , credentials ) ;
676
+ callback ( null , grpcCredentials ) ;
661
677
} ) ;
662
678
} ;
663
679
@@ -728,5 +744,19 @@ GrpcService.prototype.getService_ = function(protoOpts) {
728
744
return service ;
729
745
} ;
730
746
747
+ GrpcService . prototype . setGrpcMetadata_ = function ( metadata ) {
748
+ var cc = grpc . credentials . createFromMetadataGenerator ( function ( _ , cb ) {
749
+ var grpcMetadata = new grpc . Metadata ( ) ;
750
+
751
+ for ( var prop in metadata ) {
752
+ grpcMetadata . add ( prop , metadata [ prop ] ) ;
753
+ }
754
+
755
+ cb ( null , grpcMetadata ) ;
756
+ } ) ;
757
+
758
+ this . callCredentials . push ( cc ) ;
759
+ } ;
760
+
731
761
module . exports = GrpcService ;
732
762
module . exports . GRPC_ERROR_CODE_TO_HTTP = GRPC_ERROR_CODE_TO_HTTP ;
0 commit comments