diff --git a/bridges/MinecraftBridge.php b/bridges/MinecraftBridge.php index 494ac6b8..da37e863 100644 --- a/bridges/MinecraftBridge.php +++ b/bridges/MinecraftBridge.php @@ -1,5 +1,7 @@ article_grid)) { + throwServerException('Invalid or empty content'); } - foreach ($articles->article_grid as $article) { - if ($article->primary_category !== $this->getInput('category') && $this->getInput('category') !== 'all') { + $category = $this->getInput('category'); + + foreach ($data->article_grid as $article) { + if ($category !== 'all' && $category !== $article->primary_category) { continue; } + + $imageUrl = $this->getEncodedImageUrl($article->default_tile->image->imageURL); + $this->items[] = [ - 'title' => $article->default_tile->title, + 'title' => trim($article->default_tile->title), 'uid' => $article->article_url, - 'uri' => self::URI . $article->article_url, + 'uri' => urljoin(self::URI, $article->article_url), 'content' => $article->default_tile->sub_header, 'categories' => [$article->primary_category], - 'enclosures' => [self::URI . $article->default_tile->image->imageURL], + 'enclosures' => $imageUrl ? [$imageUrl] : [], ]; } } + + private function getEncodedImageUrl(string $path): ?string + { + $path = explode('/', ltrim($path, '/')); + $path = array_map('rawurlencode', $path); + $path = implode('/', $path); + + $url = urljoin(self::URI, $path); + + return filter_var($url, FILTER_VALIDATE_URL) ? $url : null; + } }