/**
* Created by PhpStorm.
* User: Andrey
* Date: 11.04.2023
* Time: 15:18
*/
namespace app
ews;
use app
ews
ews_parser
ews_parser;
use app
ews
ews_parser
ews_parser_interface;
use app
ews
ews_source
ews_source_interface;
use app
ews
ews_source
ews_source_manager;
use app
ews
ews_source
ews_source_manager_interface;
class news_aggregator implements news_aggregator_interface
{
/**
* @var news_source_manager_interface
*/
private $news_source_manager;
/**
* @var news_parser_interface
*/
private $news_parser;
/**
* news_aggregator constructor.
*
* @param news_source_manager_interface $news_source_manager
* @param news_parser_interface $news_parser
*/
public function __construct(news_source_manager_interface $news_source_manager, news_parser_interface $news_parser)
{
$this->news_source_manager = $news_source_manager;
$this->news_parser = $news_parser;
}
/**
* @param array $sources
* @return mixed
*/
public function get_news(array $sources): array
{
$news = [];
/**
* @var news_source_interface $source
*/
foreach ($sources as $source)
{
$news_from_source = $this->get_news_from_source($source);
$news = array_merge($news, $news_from_source);
}
return $news;
}
/**
* @param news_source_interface $source
* @return array
*/
public function get_news_from_source(news_source_interface $source): array
{
$source_content = $source->get_news_content();
$parsed_news = $this->news_parser->parse($source_content);
return $parsed_news;
}
/**
* @param $source_name
* @return news_source_interface
*/
public function get_news_source($source_name): news_source_interface
{
return $this->news_source_manager->get_source($source_name);
}
}

Коментарі 0
Коментарів ще немає. Будьте першим!
Залишити коментар
Без реєстрації. Коментар з’явиться після перевірки модератором. Посилання заборонені.