1<?php 2/** 3 * Copyright 2015 Google Inc. All Rights Reserved. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17namespace Google\Auth\HttpHandler; 18 19use GuzzleHttp\Client; 20use GuzzleHttp\ClientInterface; 21 22class HttpHandlerFactory 23{ 24 /** 25 * Builds out a default http handler for the installed version of guzzle. 26 * 27 * @param ClientInterface $client 28 * @return Guzzle5HttpHandler|Guzzle6HttpHandler|Guzzle7HttpHandler 29 * @throws \Exception 30 */ 31 public static function build(ClientInterface $client = null) 32 { 33 $client = $client ?: new Client(); 34 35 $version = null; 36 if (defined('GuzzleHttp\ClientInterface::MAJOR_VERSION')) { 37 $version = ClientInterface::MAJOR_VERSION; 38 } elseif (defined('GuzzleHttp\ClientInterface::VERSION')) { 39 /** @phpstan-ignore-next-line */ 40 $version = (int) substr(ClientInterface::VERSION, 0, 1); 41 } 42 43 switch ($version) { 44 case 5: 45 return new Guzzle5HttpHandler($client); 46 case 6: 47 return new Guzzle6HttpHandler($client); 48 case 7: 49 return new Guzzle7HttpHandler($client); 50 default: 51 throw new \Exception('Version not supported'); 52 } 53 } 54} 55