PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.4.4
Booking for Appointments and Events Calendar – Amelia v2.4.4
2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / vendor / google / auth / src / CredentialSource / UrlSource.php
ameliabooking / vendor / google / auth / src / CredentialSource Last commit date
AwsNativeSource.php 6 months ago FileSource.php 6 months ago UrlSource.php 6 months ago
UrlSource.php
98 lines
1 <?php
2 /*
3 * Copyright 2023 Google Inc.
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
18 namespace AmeliaVendor\Google\Auth\CredentialSource;
19
20 use AmeliaVendor\Google\Auth\ExternalAccountCredentialSourceInterface;
21 use AmeliaVendor\Google\Auth\HttpHandler\HttpClientCache;
22 use AmeliaVendor\Google\Auth\HttpHandler\HttpHandlerFactory;
23 use AmeliaVendor\GuzzleHttp\Psr7\Request;
24 use InvalidArgumentException;
25 use UnexpectedValueException;
26
27 /**
28 * Retrieve a token from a URL.
29 */
30 class UrlSource implements ExternalAccountCredentialSourceInterface
31 {
32 private string $url;
33 private ?string $format;
34 private ?string $subjectTokenFieldName;
35
36 /**
37 * @var array<string, string|string[]>
38 */
39 private ?array $headers;
40
41 /**
42 * @param string $url The URL to fetch the subject token from.
43 * @param string $format The format of the token in the response. Can be null or "json".
44 * @param string $subjectTokenFieldName The name of the field containing the token in the response. This is required
45 * when format is "json".
46 * @param array<string, string|string[]> $headers Request headers to send in with the request to the URL.
47 */
48 public function __construct(
49 string $url,
50 ?string $format = null,
51 ?string $subjectTokenFieldName = null,
52 ?array $headers = null
53 ) {
54 $this->url = $url;
55
56 if ($format === 'json' && is_null($subjectTokenFieldName)) {
57 throw new InvalidArgumentException(
58 'subject_token_field_name must be set when format is JSON'
59 );
60 }
61
62 $this->format = $format;
63 $this->subjectTokenFieldName = $subjectTokenFieldName;
64 $this->headers = $headers;
65 }
66
67 public function fetchSubjectToken(?callable $httpHandler = null): string
68 {
69 if (is_null($httpHandler)) {
70 $httpHandler = HttpHandlerFactory::build(HttpClientCache::getHttpClient());
71 }
72
73 $request = new Request(
74 'GET',
75 $this->url,
76 $this->headers ?: []
77 );
78
79 $response = $httpHandler($request);
80 $body = (string) $response->getBody();
81 if ($this->format === 'json') {
82 if (!$json = json_decode((string) $body, true)) {
83 throw new UnexpectedValueException(
84 'Unable to decode JSON response'
85 );
86 }
87 if (!isset($json[$this->subjectTokenFieldName])) {
88 throw new UnexpectedValueException(
89 'subject_token_field_name not found in JSON file'
90 );
91 }
92 $body = $json[$this->subjectTokenFieldName];
93 }
94
95 return $body;
96 }
97 }
98