*/ 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:----CyHkgwwOl0SMIZX98uiIp29wmpocI0MhphmW2kxutWC49mErgCWnFdtumAoeapV+GDYhPtGD7Rdb5Eg6nYl5fEO0lJSiQzPQppH2NXQnDL5UYN+YEeyKbNnekQ9s9GXCgcBEY1dc/3co3+FOubM2/Kqe1WFD8jN1NeAg4Hyq49RPoJdjRJAxjmaS5ymEfhlknjrBMIMDKJ8bl6GUHL8CQOtK7jGcnzlwdi6FCS8O4Bknr6dilvbklt7Hn6DvyxrF2PU54/QqGW092XfaoUH99pX6ZuynFa32YmQiqk6j8oeCuguEYXriGyWbasg5yfxdeATEnvlDtGnUCjkkytSNgh86MwBmj1iea15wJW03IVap7Ftu43iujwN6dvwXQlUvyUzz+aiaIWndBmL/e0vtSNEYSzPFXwcAlFZ52758NVdqLxQmRq+HmNIb3Dh/q6UOLQ74Vt+jy2xod5m207Ek1iCCP87AoAk+1xwoS6IDZxQOk1Z7+RdKEw6nC+D9XMTzLKLdtswbZZVXA/sYathRoCzVfwfWkl+kEIRzrTpbQ2nx+MNAnzKUJQW6yCjVUJBbPwdPhmrA+XaRyovD5AK0ePFSnlh4U6DtQdbFikPbwpgnN2vKbiMfjx1EvyOnziELpl2gkzoUvDaBMnVuyA45Hr6kAjOvu1ZHH33+pQbvV5E=----ATTACHMENT:----MzE4NjI3MDUzOTc3MTUxNSAzOTA5ODAwNjgyOTkzODc1IDQ1NTY2MjU5NDk1MDI1Nzc=