diff --git a/.github/actions/docs/entrypoint.sh b/.github/actions/docs/entrypoint.sh deleted file mode 100755 index 7ac74e427..000000000 --- a/.github/actions/docs/entrypoint.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -l - -set -e - -apt-get update -apt-get install -y git wget - -# Fix github "detected dubious ownership" error -git config --global --add safe.directory /github/workspace - -git reset --hard HEAD - -# Create the directories -mkdir .docs -mkdir .cache - -wget https://github.com/jdpedrie/Sami/releases/download/v4.3.0/sami.phar - -# Run the docs generation command -php sami.phar update .github/actions/docs/sami.php -chmod -R 0777 . diff --git a/.github/actions/docs/sami.php b/.github/actions/docs/sami.php deleted file mode 100644 index b3d3da8f7..000000000 --- a/.github/actions/docs/sami.php +++ /dev/null @@ -1,29 +0,0 @@ -files() - ->name('*.php') - ->exclude('vendor') - ->exclude('tests') - ->in($projectRoot); - -$versions = GitVersionCollection::create($projectRoot) - ->addFromTags(function($tag) { - return 0 === strpos($tag, 'v2.') && false === strpos($tag, 'RC'); - }) - ->add('main', 'main branch'); - -return new Sami($iterator, [ - 'title' => 'Google APIs Client Library for PHP API Reference', - 'build_dir' => $projectRoot . '/.docs/%version%', - 'cache_dir' => $projectRoot . '/.cache/%version%', - 'remote_repository' => new GitHubRemoteRepository('googleapis/google-api-php-client', $projectRoot), - 'versions' => $versions -]); diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index 7a538ecaf..c4543198e 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -5,9 +5,8 @@ branchProtectionRules: - pattern: master isAdminEnforced: true requiredStatusCheckContexts: - - 'PHP 7.4 Unit Test' - - 'PHP 7.4 --prefer-lowest Unit Test' - 'PHP 8.0 Unit Test' + - 'PHP 8.0 --prefer-lowest Unit Test' - 'PHP 8.1 Unit Test' - 'PHP 8.2 Unit Test' - 'PHP 8.3 Unit Test' diff --git a/.github/workflows/asset-release.yml b/.github/workflows/asset-release.yml index 59d5cdd56..bc4b2bf8d 100644 --- a/.github/workflows/asset-release.yml +++ b/.github/workflows/asset-release.yml @@ -10,7 +10,7 @@ jobs: strategy: matrix: operating-system: [ ubuntu-latest ] - php: [ "7.4", "8.0", "8.2" ] + php: [ "8.0", "8.3" ] name: Upload Release Assets steps: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 02d757bc1..5d09dabb0 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,31 +1,26 @@ name: Generate Documentation on: push: - branches: [main] + tags: + - "*" + workflow_dispatch: + inputs: + tag: + description: 'Tag to generate documentation for' + required: false + pull_request: + +permissions: + contents: write jobs: docs: - name: "Generate Project Documentation" - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - - run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* - - name: Install Dependencies - uses: nick-invision/retry@v1 - with: - timeout_minutes: 10 - max_attempts: 3 - command: composer install - - name: Generate and Push Documentation - uses: docker://php:7.4-cli - env: - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - with: - entrypoint: ./.github/actions/docs/entrypoint.sh - - name: Deploy 🚀 - uses: JamesIves/github-pages-deploy-action@releases/v3 - with: - ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} - BRANCH: gh-pages - FOLDER: .docs + name: "Generate and Deploy Documentation" + uses: GoogleCloudPlatform/php-tools/.github/workflows/doctum.yml@main + with: + title: "Google Cloud PHP Client" + default_version: ${{ inputs.tag || github.head_ref || github.ref_name }} + exclude_file: aliases.php + tag_pattern: "v2.*" + dry_run: ${{ github.event_name == 'pull_request' }} + diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 614045f13..8f833c134 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -11,10 +11,10 @@ jobs: strategy: fail-fast: false matrix: - php: [ "7.4", "8.0", "8.1", "8.2", "8.3" ] + php: [ "8.0", "8.1", "8.2", "8.3" ] composer-flags: [""] include: - - php: "7.4" + - php: "8.0" composer-flags: "--prefer-lowest " - php: "8.3" composer-flags: "--prefer-lowest " diff --git a/CHANGELOG.md b/CHANGELOG.md index 800b01c16..a43c59d90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [2.17.0](https://github.com/googleapis/google-api-php-client/compare/v2.16.0...v2.17.0) (2024-07-10) + + +### Features + +* Add logger to client constructor config ([#2606](https://github.com/googleapis/google-api-php-client/issues/2606)) ([1f47133](https://github.com/googleapis/google-api-php-client/commit/1f4713329d71111a317cda8ef8603fa1bdc88858)) +* Add the protected apiVersion property ([#2588](https://github.com/googleapis/google-api-php-client/issues/2588)) ([7e79f3d](https://github.com/googleapis/google-api-php-client/commit/7e79f3d7be4811f760e19cc4a2c558e04196ec1d)) + ## [2.16.0](https://github.com/googleapis/google-api-php-client/compare/v2.15.4...v2.16.0) (2024-04-24) diff --git a/README.md b/README.md index 34960da0d..93b52cacb 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ list of [Google cloud packages](https://cloud.google.com/php/docs/reference) fir these are the recommended libraries.
-
Reference Docs
https://googleapis.github.io/google-api-php-client/main/
+
Reference Docs
https://googleapis.github.io/google-api-php-client/
License
Apache 2.0
@@ -25,7 +25,7 @@ For Google Cloud Platform APIs such as [Datastore][cloud-datastore], [Cloud Stor [cloud-compute]: https://github.com/googleapis/google-cloud-php-compute ## Requirements ## -* [PHP 7.4 or higher](https://www.php.net/) +* [PHP 8.0 or higher](https://www.php.net/) ## Developer Documentation ## diff --git a/composer.json b/composer.json index 14c5d4207..abacbe84b 100644 --- a/composer.json +++ b/composer.json @@ -6,14 +6,14 @@ "homepage": "http://developers.google.com/api-client-library/php", "license": "Apache-2.0", "require": { - "php": "^7.4|^8.0", + "php": "^8.0", "google/auth": "^1.37", "google/apiclient-services": "~0.350", - "firebase/php-jwt": "~6.0", + "firebase/php-jwt": "^6.0", "monolog/monolog": "^2.9||^3.0", "phpseclib/phpseclib": "^3.0.36", - "guzzlehttp/guzzle": "^6.5.8||^7.4.5", - "guzzlehttp/psr7": "^1.9.1||^2.2.1" + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.6" }, "require-dev": { "squizlabs/php_codesniffer": "^3.8", @@ -22,8 +22,8 @@ "cache/filesystem-adapter": "^1.1", "phpcompatibility/php-compatibility": "^9.2", "composer/composer": "^1.10.23", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5" + "phpspec/prophecy-phpunit": "^2.1", + "phpunit/phpunit": "^9.6" }, "suggest": { "cache/filesystem-adapter": "For caching certs and tokens (using Google\\Client::setCache)" diff --git a/src/Client.php b/src/Client.php index c7724bd08..1285c49a7 100644 --- a/src/Client.php +++ b/src/Client.php @@ -196,6 +196,7 @@ public function __construct(array $config = []) 'prompt' => '', 'openid.realm' => '', 'include_granted_scopes' => null, + 'logger' => null, 'login_hint' => '', 'request_visible_actions' => '', 'access_type' => 'online', @@ -242,6 +243,11 @@ public function __construct(array $config = []) $this->setCache($this->config['cache']); unset($this->config['cache']); } + + if (!is_null($this->config['logger'])) { + $this->setLogger($this->config['logger']); + unset($this->config['logger']); + } } /** @@ -1037,7 +1043,8 @@ public function setAuthConfig($config) $key = isset($config['installed']) ? 'installed' : 'web'; if (isset($config['type']) && $config['type'] == 'service_account') { - // application default credentials + // @TODO(v3): Remove this, as it isn't accurate. ADC applies only to determining + // credentials based on the user's environment. $this->useApplicationDefaultCredentials(); // set the information from the config diff --git a/tests/Google/ClientTest.php b/tests/Google/ClientTest.php index 81ea7525e..4e53e34b4 100644 --- a/tests/Google/ClientTest.php +++ b/tests/Google/ClientTest.php @@ -268,6 +268,16 @@ public function testDefaultLoggerAppEngine() $this->assertInstanceOf('Monolog\Handler\SyslogHandler', $handler); } + public function testLoggerFromConstructor() + { + $logger1 = new \Monolog\Logger('unit-test'); + $client = new Client(['logger' => $logger1]); + $logger2 = $client->getLogger(); + $this->assertInstanceOf('Monolog\Logger', $logger2); + $this->assertEquals('unit-test', $logger2->getName()); + $this->assertSame($logger1, $logger2); + } + public function testSettersGetters() { $client = new Client(); @@ -279,6 +289,7 @@ public function testSettersGetters() $client->setRedirectUri('localhost'); $client->setConfig('application_name', 'me'); + $client->setLogger(new \Monolog\Logger('test')); $cache = $this->prophesize(CacheItemPoolInterface::class); $client->setCache($cache->reveal()); @@ -703,8 +714,10 @@ public function testOnGceCacheAndCacheOptions() $mockCache->getItem($prefix . GCECache::GCE_CACHE_KEY) ->shouldBeCalledTimes(1) ->willReturn($mockCacheItem->reveal()); - $mockCache->getItem(GCECredentials::cacheKey . 'universe_domain') - ->shouldBeCalledTimes(1) + // cache key from GCECredentials::getTokenUri() . 'universe_domain' + $mockCache->getItem('cc685e3a0717258b6a4cefcb020e96de6bcf904e76fd9fc1647669f42deff9bf') // google/auth < 1.41.0 + ->willReturn($mockUniverseDomainCacheItem->reveal()); + $mockCache->getItem(GCECredentials::cacheKey . 'universe_domain') // google/auth >= 1.41.0 ->willReturn($mockUniverseDomainCacheItem->reveal()); $client = new Client(['cache_config' => $cacheConfig]);