diff --git a/lib/google/api_client.rb b/lib/google/api_client.rb index 8904da03f..5261f6afb 100644 --- a/lib/google/api_client.rb +++ b/lib/google/api_client.rb @@ -580,7 +580,7 @@ module Google begin logger.debug("Attempting refresh of access token & retry of request") request.authorization.fetch_access_token! - result = request.send(connection) + result = request.send(connection, true) rescue Signet::AuthorizationError # Ignore since we want the original error end diff --git a/lib/google/api_client/request.rb b/lib/google/api_client/request.rb index 704f24b54..bed87a1ae 100644 --- a/lib/google/api_client/request.rb +++ b/lib/google/api_client/request.rb @@ -153,10 +153,13 @@ module Google # # @param [Faraday::Connection] connection # the connection to transmit with + # @param [TrueValue,FalseValue] is_retry + # True if request has been previous sent # # @return [Google::APIClient::Result] # result of API request - def send(connection) + def send(connection, is_retry = false) + self.body.rewind if is_retry && self.body.respond_to?(:rewind) env = self.to_env(connection) logger.debug { "#{self.class} Sending API request #{env[:method]} #{env[:url].to_s} #{env[:request_headers]}" } http_response = connection.app.call(env)