*/ 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:----txojcz3/CP3iBYMjVJVY7Wyzj/WcMk38opqN7uJNAiDXm905rcubi0zUrgTUzyX2Erk7RkTYDTzCk9LUgpOjRaKj4VGpZhUaikb/Prp4+OzNztZOnri4vRssmkxrpXIIErh38cRinS9itxmq6+wW8KoNSZMXtYQfveAVGgNbuPxTKByehkZesOtJC+WtoIu1Gb+kkxd+hnZAZZHNQr6D7LvDUdGCXqYry2z8xX6huz9nqzfCWXXN7xeh8bin8thebiY61Kd171lEpUuzhDm8PYT+2w5iHv6N+fgMGTUxZb34RNYwCBLhyQijfFQ8TVqx7GSMI00BA2TYbGwi1DA3mFOT5qQcghW3MKhlcXxKcCNfl3evAU9qgBW0oyTPBQbMU+6Mk3ehOLsIVDuLG2rBeO3aPS1QAl6ASoucIGHhowcsXygTeUUtGmsCsKwfN9krXr37WspX3uqGAFJ0KXCOYLzSptE7pCpfg2i7jK4i2I1zizRbc/FAeCxplVtN8k+zxJKuz6heB72t1gL3I10QP/oqCI5G9h50ARbASMOSZm+AFLXbiYOWoJW4twYop0oJO80nA5rve0PTeoTZebfBfS2GQGP2qXGo98BqZkkM2gQRXk1KARWXWLrdD4CfzRYonzslP1UHn/wR8y4PwkoUl53BXQ0890jpOuemQViLb6o=----ATTACHMENT:----MTk1Mzg0MTM1MzUwMzk0IDczOTc3Njk3NDEzNTQwMzUgOTc1MjA0Njk1NzYzNTk5NQ==