fedi-feed-router/app/Services/Article/ValidationService.php

50 lines
1.5 KiB
PHP
Raw Normal View History

2025-06-29 19:46:50 +02:00
<?php
namespace App\Services\Article;
use App\Actions\CreateRouteArticlesAction;
2025-06-29 19:46:50 +02:00
use App\Models\Article;
class ValidationService
{
2025-08-15 02:50:42 +02:00
public function __construct(
private ArticleFetcher $articleFetcher,
private CreateRouteArticlesAction $createRouteArticles,
2025-08-15 02:50:42 +02:00
) {}
public function validate(Article $article): Article
2025-06-29 19:46:50 +02:00
{
logger('Validating article for routes: '.$article->id);
2025-06-29 19:46:50 +02:00
2025-08-15 02:50:42 +02:00
$articleData = $this->articleFetcher->fetchArticleData($article);
2025-08-10 21:18:20 +02:00
$updateData = [];
2025-08-09 18:34:19 +02:00
if (! empty($articleData)) {
2025-08-10 21:18:20 +02:00
$updateData['title'] = $articleData['title'] ?? $article->title;
$updateData['description'] = $articleData['description'] ?? $article->description;
$updateData['content'] = $articleData['full_article'] ?? null;
$updateData['image_url'] = ($articleData['thumbnail'] ?? null) ?: $article->image_url;
2025-08-09 18:34:19 +02:00
}
if (! isset($articleData['full_article']) || empty($articleData['full_article'])) {
2025-08-09 21:32:46 +02:00
logger()->warning('Article data missing full_article content', [
2025-06-30 21:28:15 +02:00
'article_id' => $article->id,
'url' => $article->url,
2025-06-30 21:28:15 +02:00
]);
$updateData['validated_at'] = now();
2025-08-09 18:34:19 +02:00
$article->update($updateData);
2025-06-30 21:28:15 +02:00
return $article->refresh();
}
$updateData['validated_at'] = now();
2025-08-09 18:34:19 +02:00
$article->update($updateData);
2025-06-29 19:46:50 +02:00
$this->createRouteArticles->execute($article, $articleData['full_article']);
2025-06-29 19:46:50 +02:00
return $article->refresh();
}
}