62 lines
1.7 KiB
Ruby
62 lines
1.7 KiB
Ruby
module Travis::Api::App::Responders
|
|
require 'date'
|
|
|
|
class Atom < Base
|
|
ATOM_FEED_ERB = ERB.new <<-EOF
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
|
|
<feed xmlns="http://www.w3.org/2005/Atom">
|
|
|
|
<title><%= resource.first.repository.slug %> Builds</title>
|
|
<link href="<%= endpoint.url %>" type="application/atom+xml" rel = "self" />
|
|
<id>repo:<%= resource.first.repository.id %></id>
|
|
<rights>Copyright (c) <%= DateTime.now.strftime("%Y") %> Travis CI GmbH</rights>
|
|
<updated><%= DateTime.now.rfc3339 %></updated>
|
|
|
|
<% resource.each do |build| %>
|
|
<entry>
|
|
<title><%= build.repository.slug %> Build #<%= build.number %></title>
|
|
<link href="<%= File.join("https://", Travis.config.host, build.repository.slug, "builds", build.id.to_s) %>" />
|
|
<id>repo:<%= build.repository.id %>:build:<%= build.id %></id>
|
|
<updated><%= ::DateTime.parse(build.updated_at.to_s).rfc3339 %></updated>
|
|
<summary type="html">
|
|
<p>
|
|
<%= build.commit.message.encode(:xml => :text) %> (<%= build.commit.committer_name %>)
|
|
<br/><br/>
|
|
State: <%= build.state %>
|
|
<br/>
|
|
Started at: <%= build.started_at ? build.started_at : 'not started' %>
|
|
<br/>
|
|
Finished at: <%= build.finished_at ? build.finished_at :
|
|
build.started_at ? 'still running' : 'not started' %>
|
|
</p>
|
|
</summary>
|
|
<author>
|
|
<name><%= build.commit.committer_name %></name>
|
|
</author>
|
|
</entry>
|
|
<% end %>
|
|
|
|
</feed>
|
|
EOF
|
|
|
|
def apply?
|
|
super && resource.is_a?(ActiveRecord::Relation) && resource.first.is_a?(Build)
|
|
end
|
|
|
|
instrument_method
|
|
def apply
|
|
super
|
|
|
|
ATOM_FEED_ERB.result(binding)
|
|
end
|
|
|
|
private
|
|
|
|
def content_type
|
|
'application/atom+xml;charset=utf-8'
|
|
end
|
|
|
|
end
|
|
end
|