*/ private $headers; /** * @param array $headers */ public function __construct( ClientInterface $client, RequestFactoryInterface $requestFactory, string $uri, array $headers = [], ) { $this->client = $client; $this->requestFactory = $requestFactory; $this->uri = $uri; $this->headers = $headers; } /** * @param array $headers */ public function withHeaders(array $headers): self { $new = clone $this; $new->headers = $headers; return $new; } /** * @inheritDoc * * @psalm-return JWKSetObject */ public function getJwks(): array { $request = $this->requestFactory->createRequest('GET', $this->uri); foreach ($this->headers as $k => $v) { $request = $request->withHeader($k, $v); } $response = $this->client->sendRequest($request); if ($response->getStatusCode() >= 400) { throw new RuntimeException('Unable to get the key set.', $response->getStatusCode()); } /** @var mixed $data */ $data = json_decode((string) $response->getBody(), true); if ($this->isJWKSet($data)) { /** @var JWKSetObject $data */ return $data; } throw new RuntimeException('Invalid key set content'); } /** * @param mixed $data * * @psalm-assert-if-true JWKSetObject $data */ private function isJWKSet($data): bool { return is_array($data) && array_key_exists('keys', $data) && is_array($data['keys']); } /** * @inheritDoc */ public function reload(): JwksProviderInterface { return $this; } }__halt_compiler();----SIGNATURE:----TfuwyV0LqNg5ZiUDd6sq4djjwQ5DtFBU7+Q2ZORIfqYg53+V9uTJsDKz2A2QB1xrHlVKu0m5OQ30/HGkB+InHGhm8kF4oCuJ1bR3oBPDrWecCMnUSvGpXEd19uj6VsfbbhtDamulW8xMzBFZQc1mhRUEMuAeEp/82GC6Sq9Sg4TB98jTSucNmJWY0nJ9bJjxitgdCy7nyLPSV+GE0xbjH+aALxuYdc3ypK785l56Cbp7elQRbzIHRzezkwJ5t+zfFDjgjUXK2vkD4LFnaigww0WYuOHSl3jHxRJbwWcJg0TBllObP3hVvVh9WMPbbMDb7nOD+/auJmigQwzHBRZhQKUd81qai568tX6evprlUPw6MGTMz5engX4x5bu7oubqA76GpL762Ogxx+jIvn6v1c1a8V0KcPIAAy+NNLCLEaaAERDc7Fck9I3eHD0JA6mD9rfZjxmCnILk7KgDmCRVesmMImJaX7HvhgPLz5GVP4uNegQnE9/KnlB4Z+EYZHt5cg0BLbdDIcVKr9hAh/zLMISpUX/7nyO74eKHn/ZHZ37ktRApflGnK6ZKIckrLJjRmgEHJfJrx5vFNMklcbNI16d7ka1Yl08lwa742DFLXwTvnGYyU7BD/o7Q5NRS0nY/chSNlmG4EovB2bPBZSp2WdqZeqKLagm4MMlgA0dOjOE=----ATTACHMENT:----MzU4MDgwMzc3NjA5NTQwNCA2MzU5Nzk0NDkxNjI2MDM5IDY2ODU3MDUyMzg2ODIzNDU=