Improved feed aggregation module.

Added support to choose either atom or rss for the "/feed" format.
  Added support for feed format view to feed aggregation.
  Use proper content type for RSS and ATOM response.
  For feed aggregation  use `?view=feed` or `?view=feed.atom` or `?view=feed.rss`
  Improved sized feed view.
  Use site name for recent changes feed title.
  Better name for node feeds (include the site name).
  Use current date when a feed aggregation is converted to a new feed, to set the last build date.
  Fixed category filter per feed location for the feed aggregation module.
Fixed authentication module, where a potential case (but not probable) had no response content.
Cosmetic and minor changes on messaging module.
This commit is contained in:
Jocelyn Fiat
2017-06-12 09:36:29 +02:00
parent 78ef7af5f8
commit 34f0aa5844
9 changed files with 337 additions and 110 deletions

View File

@@ -52,6 +52,7 @@ feature -- Access: router
do
a_router.handle ("/recent_changes/", create {WSF_URI_AGENT_HANDLER}.make (agent handle_recent_changes (a_api, ?, ?)), a_router.methods_head_get)
a_router.handle ("/recent_changes/feed", create {WSF_URI_AGENT_HANDLER}.make (agent handle_recent_changes_feed (a_api, ?, ?)), a_router.methods_head_get)
a_router.handle ("/recent_changes/feed.{format}", create {WSF_URI_TEMPLATE_AGENT_HANDLER}.make (agent handle_recent_changes_feed (a_api, ?, ?)), a_router.methods_head_get)
end
feature -- Hook
@@ -104,6 +105,7 @@ feature -- Hook
ch: CMS_RECENT_CHANGE_ITEM
l_user: detachable CMS_USER
l_feed: FEED
l_feed_name: STRING_32
l_feed_item: FEED_ITEM
lnk: FEED_LINK
nb: NATURAL_32
@@ -127,7 +129,9 @@ feature -- Hook
end
end
end
create l_feed.make ("CMS Recent changes")
create l_feed_name.make_from_string (a_response.api.setup.site_name)
l_feed_name.append_string ({STRING_32} " : recent changes")
create l_feed.make (l_feed_name)
l_feed.set_date (create {DATE_TIME}.make_now_utc)
nb := a_size
across
@@ -197,10 +201,22 @@ feature -- Handler
l_size := 25
end
create mesg.make ({HTTP_STATUS_CODE}.ok)
create {GENERIC_VIEW_CMS_RESPONSE} r.make (req, res, api)
create l_content.make (1024)
recent_changes_feed (r, l_size, l_filter_source).accept (create {ATOM_FEED_GENERATOR}.make (l_content))
create mesg.make ({HTTP_STATUS_CODE}.ok)
if
attached {WSF_STRING} req.path_parameter ("format") as p_format and then
p_format.same_string ("rss")
then
mesg.header.put_content_type ("application/rss+xml")
recent_changes_feed (r, l_size, l_filter_source).accept (create {RSS_2_FEED_GENERATOR}.make (l_content))
else
mesg.header.put_content_type ("application/atom+xml")
recent_changes_feed (r, l_size, l_filter_source).accept (create {ATOM_FEED_GENERATOR}.make (l_content))
end
mesg.set_payload (l_content)
res.send (mesg)
end