123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- <?php
- namespace Http\Discovery;
- use Http\Discovery\Exception\DiscoveryFailedException;
- use Psr\Http\Message\RequestFactoryInterface;
- use Psr\Http\Message\ResponseFactoryInterface;
- use Psr\Http\Message\ServerRequestFactoryInterface;
- use Psr\Http\Message\StreamFactoryInterface;
- use Psr\Http\Message\UploadedFileFactoryInterface;
- use Psr\Http\Message\UriFactoryInterface;
- /**
- * Finds PSR-17 factories.
- *
- * @author Tobias Nyholm <tobias.nyholm@gmail.com>
- */
- final class Psr17FactoryDiscovery extends ClassDiscovery
- {
- private static function createException($type, Exception $e)
- {
- return new \Http\Discovery\Exception\NotFoundException(
- 'No PSR-17 '.$type.' found. Install a package from this list: https://packagist.org/providers/psr/http-factory-implementation',
- 0,
- $e
- );
- }
- /**
- * @return RequestFactoryInterface
- *
- * @throws Exception\NotFoundException
- */
- public static function findRequestFactory()
- {
- try {
- $messageFactory = static::findOneByType(RequestFactoryInterface::class);
- } catch (DiscoveryFailedException $e) {
- throw self::createException('request factory', $e);
- }
- return static::instantiateClass($messageFactory);
- }
- /**
- * @return ResponseFactoryInterface
- *
- * @throws Exception\NotFoundException
- */
- public static function findResponseFactory()
- {
- try {
- $messageFactory = static::findOneByType(ResponseFactoryInterface::class);
- } catch (DiscoveryFailedException $e) {
- throw self::createException('response factory', $e);
- }
- return static::instantiateClass($messageFactory);
- }
- /**
- * @return ServerRequestFactoryInterface
- *
- * @throws Exception\NotFoundException
- */
- public static function findServerRequestFactory()
- {
- try {
- $messageFactory = static::findOneByType(ServerRequestFactoryInterface::class);
- } catch (DiscoveryFailedException $e) {
- throw self::createException('server request factory', $e);
- }
- return static::instantiateClass($messageFactory);
- }
- /**
- * @return StreamFactoryInterface
- *
- * @throws Exception\NotFoundException
- */
- public static function findStreamFactory()
- {
- try {
- $messageFactory = static::findOneByType(StreamFactoryInterface::class);
- } catch (DiscoveryFailedException $e) {
- throw self::createException('stream factory', $e);
- }
- return static::instantiateClass($messageFactory);
- }
- /**
- * @return UploadedFileFactoryInterface
- *
- * @throws Exception\NotFoundException
- */
- public static function findUploadedFileFactory()
- {
- try {
- $messageFactory = static::findOneByType(UploadedFileFactoryInterface::class);
- } catch (DiscoveryFailedException $e) {
- throw self::createException('uploaded file factory', $e);
- }
- return static::instantiateClass($messageFactory);
- }
- /**
- * @return UriFactoryInterface
- *
- * @throws Exception\NotFoundException
- */
- public static function findUrlFactory()
- {
- try {
- $messageFactory = static::findOneByType(UriFactoryInterface::class);
- } catch (DiscoveryFailedException $e) {
- throw self::createException('url factory', $e);
- }
- return static::instantiateClass($messageFactory);
- }
- }
|