File "UrlGeneratorFactory.php"
Full Path: /home/clickysoft/public_html/jmapi5.clickysoft.net/vendor/spatie/laravel-medialibrary/src/Support/UrlGenerator/UrlGeneratorFactory.php
File size: 1.47 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Spatie\MediaLibrary\Support\UrlGenerator;
use Spatie\MediaLibrary\Conversions\ConversionCollection;
use Spatie\MediaLibrary\MediaCollections\Exceptions\InvalidUrlGenerator;
use Spatie\MediaLibrary\MediaCollections\Models\Media;
use Spatie\MediaLibrary\Support\PathGenerator\PathGeneratorFactory;
class UrlGeneratorFactory
{
public static function createForMedia(Media $media, string $conversionName = ''): UrlGenerator
{
$urlGeneratorClass = config('media-library.url_generator');
static::guardAgainstInvalidUrlGenerator($urlGeneratorClass);
/** @var UrlGenerator $urlGenerator */
$urlGenerator = app($urlGeneratorClass);
$pathGenerator = PathGeneratorFactory::create($media);
$urlGenerator
->setMedia($media)
->setPathGenerator($pathGenerator);
if ($conversionName !== '') {
$conversion = ConversionCollection::createForMedia($media)->getByName($conversionName);
$urlGenerator->setConversion($conversion);
}
return $urlGenerator;
}
public static function guardAgainstInvalidUrlGenerator(string $urlGeneratorClass): void
{
if (! class_exists($urlGeneratorClass)) {
throw InvalidUrlGenerator::doesntExist($urlGeneratorClass);
}
if (! is_subclass_of($urlGeneratorClass, UrlGenerator::class)) {
throw InvalidUrlGenerator::doesNotImplementUrlGenerator($urlGeneratorClass);
}
}
}