Fix: synchronous metadata retrieval is failing in strict mode

Metadata can now only be string or null.

Fixes #1653
This commit is contained in:
ArthurHoaro 2020-12-16 14:04:32 +01:00
parent e4b8330e45
commit 6a3a78d023
3 changed files with 9 additions and 4 deletions

View file

@ -227,7 +227,7 @@ protected function buildLinkDataFromUrl(Request $request, string $url): array
protected function buildFormData(array $link, bool $isNew, Request $request): array protected function buildFormData(array $link, bool $isNew, Request $request): array
{ {
$link['tags'] = strlen($link['tags']) > 0 $link['tags'] = $link['tags'] !== null && strlen($link['tags']) > 0
? $link['tags'] . $this->container->conf->get('general.tags_separator', ' ') ? $link['tags'] . $this->container->conf->get('general.tags_separator', ' ')
: $link['tags'] : $link['tags']
; ;

View file

@ -60,10 +60,15 @@ public function retrieve(string $url): array
$title = mb_convert_encoding($title, 'utf-8', $charset); $title = mb_convert_encoding($title, 'utf-8', $charset);
} }
return [ return array_map([$this, 'cleanMetadata'], [
'title' => $title, 'title' => $title,
'description' => $description, 'description' => $description,
'tags' => $tags, 'tags' => $tags,
]; ]);
}
protected function cleanMetadata($data): ?string
{
return !is_string($data) || empty(trim($data)) ? null : trim($data);
} }
} }

View file

@ -41,7 +41,7 @@ public function testFullRetrieval(): void
$remoteCharset = 'utf-8'; $remoteCharset = 'utf-8';
$expectedResult = [ $expectedResult = [
'title' => $remoteTitle, 'title' => trim($remoteTitle),
'description' => $remoteDesc, 'description' => $remoteDesc,
'tags' => $remoteTags, 'tags' => $remoteTags,
]; ];