metadataFactory = $metadataFactory;
}
/**
* Parse metadata
*
* @param string $data
* @return MetadataInterface
*/
public function execute(string $data): MetadataInterface
{
$title = null;
$description = null;
$keywords = [];
if (is_callable('iptcparse')) {
$iptcData = iptcparse($data);
if (!empty($iptcData[self::IPTC_TITLE][0])) {
$title = trim($iptcData[self::IPTC_TITLE][0]);
}
if (!empty($iptcData[self::IPTC_DESCRIPTION][0])) {
$description = trim($iptcData[self::IPTC_DESCRIPTION][0]);
}
if (!empty($iptcData[self::IPTC_KEYWORDS][0])) {
$keywords = array_values($iptcData[self::IPTC_KEYWORDS]);
}
}
return $this->metadataFactory->create([
'title' => $title,
'description' => $description,
'keywords' => !empty($keywords) ? $keywords : null
]);
}
}