Let readers and bots follow new incidents without polling the card: /:locale/feed.xml (RSS 2.0) and /:locale/feed.json (JSON Feed 1.1), the latest 50 incidents with stable IDs, advertised in the page head and footer. /data.json publishes every datacenter with its specs and sourced incidents under CC BY 4.0, for journalists and OSINT reuse. Assisted-by: Claude:opus-5
24 lines
1,020 B
Text
24 lines
1,020 B
Text
<?xml version="1.0" encoding="UTF-8"?>
|
|
<% base = base_url %>
|
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
<channel>
|
|
<title><%= format(t(:feed_title), site: t(:title)) %></title>
|
|
<link><%= base %>/<%= @locale %></link>
|
|
<description><%= t(:tagline) %></description>
|
|
<language><%= @locale %></language>
|
|
<atom:link href="<%= base %>/<%= @locale %>/feed.xml" rel="self" type="application/rss+xml"/>
|
|
<% if (top = @incidents.first) %>
|
|
<lastBuildDate><%= [*@incidents.map(&:updated_at).compact, feed_time(top)].max.utc.rfc2822 %></lastBuildDate>
|
|
<% end %>
|
|
<% @incidents.each do |i| %>
|
|
<item>
|
|
<title><%= incident_headline(i) %></title>
|
|
<link><%= base %><%= dc_path(i.datacenter) %></link>
|
|
<guid isPermaLink="false"><%= incident_id(i) %></guid>
|
|
<pubDate><%= feed_time(i).rfc2822 %></pubDate>
|
|
<category><%= kind_label(i.kind) %></category>
|
|
<description><%= incident_html(i) %></description>
|
|
</item>
|
|
<% end %>
|
|
</channel>
|
|
</rss>
|