fedi-feed-router/app/Services/Factories/HomepageParserFactory.php

32 lines
808 B
PHP
Raw Normal View History

2025-06-29 21:33:18 +02:00
<?php
namespace App\Services\Factories;
use App\Contracts\HomepageParserInterface;
2025-07-05 18:26:04 +02:00
use App\Models\Feed;
2025-06-29 21:33:18 +02:00
class HomepageParserFactory
{
2025-07-05 18:26:04 +02:00
public static function getParserForFeed(Feed $feed): ?HomepageParserInterface
2025-06-29 21:33:18 +02:00
{
if (! $feed->provider) {
2025-07-05 18:26:04 +02:00
return null;
2025-06-29 21:33:18 +02:00
}
2025-08-10 21:47:10 +02:00
$providerConfig = config("feed.providers.{$feed->provider}");
if (! $providerConfig || ! isset($providerConfig['parsers']['homepage'])) {
2025-08-10 21:47:10 +02:00
return null;
}
/** @var class-string<HomepageParserInterface> $parserClass */
2025-08-10 21:47:10 +02:00
$parserClass = $providerConfig['parsers']['homepage'];
if (! class_exists($parserClass)) {
2025-08-10 21:47:10 +02:00
return null;
}
$language = $feed->language->short_code ?? 'en';
return new $parserClass($language);
2025-06-29 21:33:18 +02:00
}
2025-07-05 18:26:04 +02:00
}