From 6508ebb34adea76466ffc6d7711a584a1a22889a Mon Sep 17 00:00:00 2001 From: phecho Date: Tue, 1 Dec 2015 16:59:28 +0800 Subject: [PATCH] Merged Atom & Rss Controllers into Feed Controller --- app/Http/Controllers/AtomController.php | 73 --------------- app/Http/Controllers/FeedController.php | 112 ++++++++++++++++++++++++ app/Http/Controllers/RssController.php | 71 --------------- app/Http/Routes/FeedRoutes.php | 4 +- 4 files changed, 114 insertions(+), 146 deletions(-) delete mode 100644 app/Http/Controllers/AtomController.php create mode 100644 app/Http/Controllers/FeedController.php delete mode 100644 app/Http/Controllers/RssController.php diff --git a/app/Http/Controllers/AtomController.php b/app/Http/Controllers/AtomController.php deleted file mode 100644 index e06ebd28..00000000 --- a/app/Http/Controllers/AtomController.php +++ /dev/null @@ -1,73 +0,0 @@ -title = Setting::get('app_name'); - $feed->description = trans('cachet.feed'); - $feed->link = Str::canonicalize(Setting::get('app_domain')); - - $feed->setDateFormat('datetime'); - - if ($group->exists) { - $group->components->map(function ($component) use ($feed) { - $component->incidents()->visible()->orderBy('created_at', 'desc')->get()->map(function ($incident) use ($feed) { - $this->feedAddItem($feed, $incident); - }); - }); - } else { - Incident::visible()->orderBy('created_at', 'desc')->get()->map(function ($incident) use ($feed) { - $this->feedAddItem($feed, $incident); - }); - } - - return $feed->render('atom'); - } - - /** - * Adds an item to the feed. - * - * @param \Roumen\Feed\Facades\Feed $feed - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return void - */ - private function feedAddItem(&$feed, $incident) - { - $feed->add( - $incident->name, - Setting::get('app_name'), - Str::canonicalize(route('incident', ['id' => $incident->id])), - $incident->created_at->toAtomString(), - Markdown::convertToHtml($incident->message) - ); - } -} diff --git a/app/Http/Controllers/FeedController.php b/app/Http/Controllers/FeedController.php new file mode 100644 index 00000000..629d1758 --- /dev/null +++ b/app/Http/Controllers/FeedController.php @@ -0,0 +1,112 @@ +feed = Feed::make(); + $this->feed->title = Setting::get('app_name'); + $this->feed->description = trans('cachet.feed'); + $this->feed->link = Str::canonicalize(Setting::get('app_domain')); + $this->feed->setDateFormat('datetime'); + } + + /** + * Generates an Atom feed of all incidents. + * + * @param \CachetHQ\Cachet\Models\ComponentGroup|null $group + * + * @return \Illuminate\Http\Response + */ + public function atomAction(ComponentGroup $group = null) + { + return $this->feedAction($group, false); + } + + /** + * Generates a Rss feed of all incidents. + * + * @param \CachetHQ\Cachet\Models\ComponentGroup|null $group + * + * @return \Illuminate\Http\Response + */ + public function rssAction(ComponentGroup $group = null) + { + $this->feed->lang = Setting::get('app_locale'); + + return $this->feedAction($group, true); + } + + /** + * Generates a Rss feed of all incidents. + * + * @param \CachetHQ\Cachet\Models\ComponentGroup|null $group + * @param bool $isRss + * + * @return \Illuminate\Http\Response + */ + private function feedAction(ComponentGroup &$group, $isRss) + { + if ($group->exists) { + $group->components->map(function ($component) { + $component->incidents()->visible()->orderBy('created_at', 'desc')->get()->map(function ($incident) use ($isRss) { + $this->feedAddItem($incident, $isRss); + }); + }); + } else { + Incident::visible()->orderBy('created_at', 'desc')->get()->map(function ($incident) use ($isRss) { + $this->feedAddItem($incident, $isRss); + }); + } + + return $this->feed->render($isRss ? 'rss' : 'atom'); + } + + /** + * Adds an item to the feed. + * + * @param \CachetHQ\Cachet\Models\Incident $incident + * @param bool $isRss + */ + private function feedAddItem($incident, $isRss) + { + $this->feed->add( + $incident->name, + Setting::get('app_name'), + Str::canonicalize(route('incident', ['id' => $incident->id])), + $isRss ? $incident->created_at->toRssString() : $incident->created_at->toAtomString(), + $isRss ? $incident->message : Markdown::convertToHtml($incident->message) + ); + } +} diff --git a/app/Http/Controllers/RssController.php b/app/Http/Controllers/RssController.php deleted file mode 100644 index d98a661b..00000000 --- a/app/Http/Controllers/RssController.php +++ /dev/null @@ -1,71 +0,0 @@ -title = Setting::get('app_name'); - $feed->lang = Setting::get('app_locale'); - $feed->description = trans('cachet.feed'); - $feed->link = Str::canonicalize(Setting::get('app_domain')); - - $feed->setDateFormat('datetime'); - - if ($group->exists) { - $group->components->map(function ($component) use ($feed) { - $component->incidents()->visible()->orderBy('created_at', 'desc')->get()->map(function ($incident) use ($feed) { - $this->feedAddItem($feed, $incident); - }); - }); - } else { - Incident::visible()->orderBy('created_at', 'desc')->get()->map(function ($incident) use ($feed) { - $this->feedAddItem($feed, $incident); - }); - } - - return $feed->render('rss'); - } - - /** - * Adds an item to the feed. - * - * @param \Roumen\Feed\Facades\Feed $feed - * @param \CachetHQ\Cachet\Models\Incident $incident - */ - private function feedAddItem(&$feed, $incident) - { - $feed->add( - $incident->name, - Setting::get('app_name'), - Str::canonicalize(route('incident', ['id' => $incident->id])), - $incident->created_at->toRssString(), - $incident->message - ); - } -} diff --git a/app/Http/Routes/FeedRoutes.php b/app/Http/Routes/FeedRoutes.php index acb2cd69..ebdd2cc3 100644 --- a/app/Http/Routes/FeedRoutes.php +++ b/app/Http/Routes/FeedRoutes.php @@ -34,11 +34,11 @@ class FeedRoutes ], function ($router) { $router->get('/atom/{component_group?}', [ 'as' => 'feed.atom', - 'uses' => 'AtomController@feedAction', + 'uses' => 'FeedController@atomAction', ]); $router->get('/rss/{component_group?}', [ 'as' => 'feed.rss', - 'uses' => 'RssController@feedAction', + 'uses' => 'FeedController@rssAction', ]); }); }