source: vendor/google/auth/src/UpdateMetadataTrait.php

Last change on this file was e3d4e0a, checked in by Vlado 222039 <vlado.popovski@…>, 7 days ago

Upload project files

  • Property mode set to 100644
File size: 2.4 KB
RevLine 
[e3d4e0a]1<?php
2/*
3 * Copyright 2023 Google LLC
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 */
17
18namespace Google\Auth;
19
20/**
21 * Provides shared methods for updating request metadata (request headers).
22 *
23 * Should implement {@see UpdateMetadataInterface} and {@see FetchAuthTokenInterface}.
24 *
25 * @internal
26 */
27trait UpdateMetadataTrait
28{
29 use MetricsTrait;
30
31 /**
32 * export a callback function which updates runtime metadata.
33 *
34 * @return callable updateMetadata function
35 * @deprecated
36 */
37 public function getUpdateMetadataFunc()
38 {
39 return [$this, 'updateMetadata'];
40 }
41
42 /**
43 * Updates metadata with the authorization token.
44 *
45 * @param array<mixed> $metadata metadata hashmap
46 * @param string $authUri optional auth uri
47 * @param callable|null $httpHandler callback which delivers psr7 request
48 * @return array<mixed> updated metadata hashmap
49 */
50 public function updateMetadata(
51 $metadata,
52 $authUri = null,
53 ?callable $httpHandler = null
54 ) {
55 $metadata_copy = $metadata;
56
57 // We do need to set the service api usage metrics irrespective even if
58 // the auth token is set because invoking this method with auth tokens
59 // would mean the intention is to just explicitly set the metrics metadata.
60 $metadata_copy = $this->applyServiceApiUsageMetrics($metadata_copy);
61
62 if (isset($metadata_copy[self::AUTH_METADATA_KEY])) {
63 // Auth metadata has already been set
64 return $metadata_copy;
65 }
66 $result = $this->fetchAuthToken($httpHandler);
67 if (isset($result['access_token'])) {
68 $metadata_copy[self::AUTH_METADATA_KEY] = ['Bearer ' . $result['access_token']];
69 } elseif (isset($result['id_token'])) {
70 $metadata_copy[self::AUTH_METADATA_KEY] = ['Bearer ' . $result['id_token']];
71 }
72 return $metadata_copy;
73 }
74}
Note: See TracBrowser for help on using the repository browser.