<?php declare(strict_types=1); /* * The MIT License (MIT) * * Copyright (c) 2014-2020 Spomky-Labs * * This software may be modified and distributed under the terms * of the MIT license. See the LICENSE file for details. */ namespace Jose\Component\KeyManagement; use Psr\Http\Client\ClientInterface; use Psr\Http\Message\RequestFactoryInterface; use RuntimeException; abstract class UrlKeySetFactory { /** * @var ClientInterface */ private $client; /** * @var RequestFactoryInterface */ private $requestFactory; /** * UrlKeySetFactory constructor. */ public function __construct(ClientInterface $client, RequestFactoryInterface $requestFactory) { $this->client = $client; $this->requestFactory = $requestFactory; } /** * @throws RuntimeException if the response content is invalid */ protected function getContent(string $url, array $header = []): string { $request = $this->requestFactory->createRequest('GET', $url); foreach ($header 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()); } return $response->getBody()->getContents(); } }