Index: vendor/google/apiclient/src/AuthHandler/AuthHandlerFactory.php
===================================================================
--- vendor/google/apiclient/src/AuthHandler/AuthHandlerFactory.php	(revision e3d4e0a8bc0f13135f27c0b055b5c00f64a28f01)
+++ vendor/google/apiclient/src/AuthHandler/AuthHandlerFactory.php	(revision e3d4e0a8bc0f13135f27c0b055b5c00f64a28f01)
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Google\AuthHandler;
+
+use Exception;
+use GuzzleHttp\ClientInterface;
+
+class AuthHandlerFactory
+{
+    /**
+     * Builds out a default http handler for the installed version of guzzle.
+     *
+     * @return Guzzle6AuthHandler|Guzzle7AuthHandler
+     * @throws Exception
+     */
+    public static function build($cache = null, array $cacheConfig = [])
+    {
+        $guzzleVersion = null;
+        if (defined('\GuzzleHttp\ClientInterface::MAJOR_VERSION')) {
+            $guzzleVersion = ClientInterface::MAJOR_VERSION;
+        } elseif (defined('\GuzzleHttp\ClientInterface::VERSION')) {
+            $guzzleVersion = (int) substr(ClientInterface::VERSION, 0, 1);
+        }
+
+        switch ($guzzleVersion) {
+            case 6:
+                return new Guzzle6AuthHandler($cache, $cacheConfig);
+            case 7:
+                return new Guzzle7AuthHandler($cache, $cacheConfig);
+            default:
+                throw new Exception('Version not supported');
+        }
+    }
+}
Index: vendor/google/apiclient/src/AuthHandler/Guzzle6AuthHandler.php
===================================================================
--- vendor/google/apiclient/src/AuthHandler/Guzzle6AuthHandler.php	(revision e3d4e0a8bc0f13135f27c0b055b5c00f64a28f01)
+++ vendor/google/apiclient/src/AuthHandler/Guzzle6AuthHandler.php	(revision e3d4e0a8bc0f13135f27c0b055b5c00f64a28f01)
@@ -0,0 +1,118 @@
+<?php
+
+namespace Google\AuthHandler;
+
+use Google\Auth\CredentialsLoader;
+use Google\Auth\FetchAuthTokenCache;
+use Google\Auth\HttpHandler\HttpHandlerFactory;
+use Google\Auth\Middleware\AuthTokenMiddleware;
+use Google\Auth\Middleware\ScopedAccessTokenMiddleware;
+use Google\Auth\Middleware\SimpleMiddleware;
+use GuzzleHttp\Client;
+use GuzzleHttp\ClientInterface;
+use Psr\Cache\CacheItemPoolInterface;
+
+/**
+ * This supports Guzzle 6
+ */
+class Guzzle6AuthHandler
+{
+    protected $cache;
+    protected $cacheConfig;
+
+    public function __construct(?CacheItemPoolInterface $cache = null, array $cacheConfig = [])
+    {
+        $this->cache = $cache;
+        $this->cacheConfig = $cacheConfig;
+    }
+
+    public function attachCredentials(
+        ClientInterface $http,
+        CredentialsLoader $credentials,
+        ?callable $tokenCallback = null
+    ) {
+        // use the provided cache
+        if ($this->cache) {
+            $credentials = new FetchAuthTokenCache(
+                $credentials,
+                $this->cacheConfig,
+                $this->cache
+            );
+        }
+
+        return $this->attachCredentialsCache($http, $credentials, $tokenCallback);
+    }
+
+    public function attachCredentialsCache(
+        ClientInterface $http,
+        FetchAuthTokenCache $credentials,
+        ?callable $tokenCallback = null
+    ) {
+        // if we end up needing to make an HTTP request to retrieve credentials, we
+        // can use our existing one, but we need to throw exceptions so the error
+        // bubbles up.
+        $authHttp = $this->createAuthHttp($http);
+        $authHttpHandler = HttpHandlerFactory::build($authHttp);
+        $middleware = new AuthTokenMiddleware(
+            $credentials,
+            $authHttpHandler,
+            $tokenCallback
+        );
+
+        $config = $http->getConfig();
+        $config['handler']->remove('google_auth');
+        $config['handler']->push($middleware, 'google_auth');
+        $config['auth'] = 'google_auth';
+        $http = new Client($config);
+
+        return $http;
+    }
+
+    public function attachToken(ClientInterface $http, array $token, array $scopes)
+    {
+        $tokenFunc = function ($scopes) use ($token) {
+            return $token['access_token'];
+        };
+
+        // Derive a cache prefix from the token, to ensure setting a new token
+        // results in a cache-miss.
+        // Note: Supplying a custom "prefix" will bust this behavior.
+        $cacheConfig = $this->cacheConfig;
+        if (!isset($cacheConfig['prefix']) && isset($token['access_token'])) {
+            $cacheConfig['prefix'] = substr(sha1($token['access_token']), -10);
+        }
+
+        $middleware = new ScopedAccessTokenMiddleware(
+            $tokenFunc,
+            $scopes,
+            $cacheConfig,
+            $this->cache
+        );
+
+        $config = $http->getConfig();
+        $config['handler']->remove('google_auth');
+        $config['handler']->push($middleware, 'google_auth');
+        $config['auth'] = 'scoped';
+        $http = new Client($config);
+
+        return $http;
+    }
+
+    public function attachKey(ClientInterface $http, $key)
+    {
+        $middleware = new SimpleMiddleware(['key' => $key]);
+
+        $config = $http->getConfig();
+        $config['handler']->remove('google_auth');
+        $config['handler']->push($middleware, 'google_auth');
+        $config['auth'] = 'simple';
+        $http = new Client($config);
+
+        return $http;
+    }
+
+    private function createAuthHttp(ClientInterface $http)
+    {
+        return new Client(['http_errors' => true] + $http->getConfig());
+    }
+}
Index: vendor/google/apiclient/src/AuthHandler/Guzzle7AuthHandler.php
===================================================================
--- vendor/google/apiclient/src/AuthHandler/Guzzle7AuthHandler.php	(revision e3d4e0a8bc0f13135f27c0b055b5c00f64a28f01)
+++ vendor/google/apiclient/src/AuthHandler/Guzzle7AuthHandler.php	(revision e3d4e0a8bc0f13135f27c0b055b5c00f64a28f01)
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Google\AuthHandler;
+
+/**
+ * This supports Guzzle 7
+ */
+class Guzzle7AuthHandler extends Guzzle6AuthHandler
+{
+}
