From 00943fcd32c4d4ea1e0b036ea3f30d1a1749d988 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Thu, 7 May 2015 13:09:42 -0700
Subject: [PATCH] Updated the getGoogleAuthDelegate function to use
 credential.getRequestMetadata

---
 src/node/index.js      |  7 ++++---
 src/node/src/client.js | 19 ++++++++++---------
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/src/node/index.js b/src/node/index.js
index 875756328d..c09e416c6e 100644
--- a/src/node/index.js
+++ b/src/node/index.js
@@ -100,22 +100,23 @@ function load(filename, format) {
 function getGoogleAuthDelegate(credential) {
   /**
    * Update a metadata object with authentication information.
+   * @param {string} authURI The uri to authenticate to
    * @param {Object} metadata Metadata object
    * @param {function(Error, Object)} callback
    */
-  return function updateMetadata(metadata, callback) {
+  return function updateMetadata(authURI, metadata, callback) {
     metadata = _.clone(metadata);
     if (metadata.Authorization) {
       metadata.Authorization = _.clone(metadata.Authorization);
     } else {
       metadata.Authorization = [];
     }
-    credential.getAccessToken(function(err, token) {
+    credential.getRequestMetadata(authURI, function(err, header) {
       if (err) {
         callback(err);
         return;
       }
-      metadata.Authorization.push('Bearer ' + token);
+      metadata.Authorization.push(header.Authorization);
       callback(null, metadata);
     });
   };
diff --git a/src/node/src/client.js b/src/node/src/client.js
index b2b79e8b70..5f7dcdf4d9 100644
--- a/src/node/src/client.js
+++ b/src/node/src/client.js
@@ -469,27 +469,28 @@ var requester_makers = {
  * requestSerialize: function to serialize request objects
  * responseDeserialize: function to deserialize response objects
  * @param {Object} methods An object mapping method names to method attributes
+ * @param {string} serviceName The name of the service
  * @return {function(string, Object)} New client constructor
  */
-function makeClientConstructor(methods) {
+function makeClientConstructor(methods, serviceName) {
   /**
    * Create a client with the given methods
    * @constructor
    * @param {string} address The address of the server to connect to
    * @param {Object} options Options to pass to the underlying channel
-   * @param {function(Object, function)=} updateMetadata function to update the
-   *     metadata for each request
+   * @param {function(string, Object, function)=} updateMetadata function to
+   *     update the metadata for each request
    */
   function Client(address, options, updateMetadata) {
-    if (updateMetadata) {
-      this.updateMetadata = updateMetadata;
-    } else {
-      this.updateMetadata = function(metadata, callback) {
+    if (!updateMetadata) {
+      updateMetadata = function(uri, metadata, callback) {
         callback(null, metadata);
       };
     }
-    this.server_address = address;
+    this.server_address = address.replace(/\/$/, '');
     this.channel = new grpc.Channel(address, options);
+    this.updateMetadata = _.partial(updateMetadata,
+                                    this.server_address + '/' + serviceName);
   }
 
   _.each(methods, function(attrs, name) {
@@ -525,7 +526,7 @@ function makeClientConstructor(methods) {
  * @return {function(string, Object)} New client constructor
  */
 function makeProtobufClientConstructor(service) {
-  var method_attrs = common.getProtobufServiceAttrs(service);
+  var method_attrs = common.getProtobufServiceAttrs(service, service.name);
   var Client = makeClientConstructor(method_attrs);
   Client.service = service;
 
-- 
GitLab