Skip to content

Commit 3d617cf

Browse files
improved feed building using feed service provider
1 parent a47f102 commit 3d617cf

File tree

2 files changed

+8
-33
lines changed

2 files changed

+8
-33
lines changed

Command/Web/FeedController.php

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace librarianphp\Web;
44

55
use Librarian\Content;
6+
use Librarian\Provider\FeedServiceProvider;
67
use Librarian\WebController;
78
use Librarian\Provider\ContentServiceProvider;
89
use Suin\RSSWriter\Channel;
@@ -13,38 +14,10 @@ class FeedController extends WebController
1314
{
1415
public function handle(): void
1516
{
16-
$feed = new Feed();
17-
$channel = new Channel();
18-
$channel
19-
->title($this->getApp()->config->site_name)
20-
->description($this->getApp()->config->site_description)
21-
->url($this->getApp()->config->site_url)
22-
->feedUrl($this->getApp()->config->site_url . '/feed')
23-
->language('en-US')
24-
->copyright('Copyright ' . date('Y') . ', '. $this->getApp()->config->site_name)
25-
->pubDate(strtotime(date('Y-m-d H:i:s')))
26-
->lastBuildDate(strtotime(date('Y-m-d H:i:s')))
27-
->ttl(60)
28-
->appendTo($feed);
17+
/** @var FeedServiceProvider $feed_provider */
18+
$feed_provider = $this->getApp()->feed;
2919

30-
/** @var ContentServiceProvider $content_provider */
31-
$content_provider = $this->getApp()->content;
32-
$content_list = $content_provider->fetchAll();
33-
34-
/** @var Content $content */
35-
foreach ($content_list as $content) {
36-
$item = new Item();
37-
$item
38-
->title($content->title ?? '')
39-
->description('<div>'.($content->description ?? '').'</div>')
40-
->contentEncoded('<div>'.($content->description ?? '').'</div>')
41-
->url($this->getApp()->config->site_url . '/' . $content->getLink())
42-
->author($this->getApp()->config->site_author)
43-
->pubDate(strtotime($content->getDate()))
44-
->guid($this->getApp()->config->site_url . '/' . $content->getLink(), true)
45-
->preferCdata(true) // By this, title and description become CDATA wrapped HTML.
46-
->appendTo($channel);
47-
}
20+
$feed = $feed_provider->buildFeed();
4821

4922
header('Content-type: application/rss+xml');
5023
echo $feed;

tests/Pest.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
*/
2626

2727
use Librarian\Provider\ContentServiceProvider;
28+
use Librarian\Provider\FeedServiceProvider;
29+
use Librarian\Provider\LibrarianServiceProvider;
2830
use Librarian\Provider\RouterServiceProvider;
2931
use Librarian\Provider\TwigServiceProvider;
30-
use Librarian\Provider\LibrarianServiceProvider;
31-
3232
use Librarian\Request;
3333
use Minicli\App;
3434

@@ -77,6 +77,7 @@ function getLibrarianIndex(string $custom = null): App
7777
$app->addService('twig', new TwigServiceProvider());
7878
$app->addService('librarian', new LibrarianServiceProvider());
7979
$app->addService('content', new ContentServiceProvider());
80+
$app->addService('feed', new FeedServiceProvider());
8081

8182
$app->librarian->boot();
8283

@@ -108,6 +109,7 @@ function getLibrarianContent(string $slug): App
108109
$app->addService('twig', new TwigServiceProvider());
109110
$app->addService('librarian', new LibrarianServiceProvider());
110111
$app->addService('content', new ContentServiceProvider());
112+
$app->addService('feed', new FeedServiceProvider());
111113

112114
$app->librarian->boot();
113115

0 commit comments

Comments
 (0)