travis-api/lib/travis/api/app/responders/atom.rb
Hiro Asari 30b60283f8 Construct build result URL from parts
Currently, there is no easy way to grab this information from
the Build model.
So we need to construct it from various parts at our disposal.
2013-11-11 09:39:13 -05:00

64 lines
1.7 KiB
Ruby

module Travis::Api::App::Responders
require 'securerandom'
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><%= @builds.first.repository.slug %> Builds</title>
<link href="<%= endpoint.url %>" type="application/atom+xml" rel = "self" />
<id>urn:uuid:<%= SecureRandom.uuid %></id>
<rights>Copyright (c) <%= DateTime.now.strftime("%Y") %> Travis CI GmbH</rights>
<updated><%= DateTime.now.strftime %></updated>
<% @builds.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>urn:uuid:<%= SecureRandom.uuid %></id>
<updated><%= build.finished_at || build.started_at %></updated>
<summary type="html">
&lt;p&gt;
<%= build.commit.message %> (<%= build.commit.committer_name %>)
&lt;br/&gt;&lt;br/&gt;
State: <%= build.state %>
&lt;br/&gt;
Started at: <%= build.started_at ? build.started_at : 'not started' %>
&lt;br/&gt;
Finished at: <%= build.finished_at ? build.finished_at :
build.started_at ? 'still running' : 'not started' %>
&lt;/p&gt;
</summary>
<author>
<name><%= build.commit.committer_name %></name>
</author>
</entry>
<% end %>
</feed>
EOF
def apply?
if resource.is_a?(ActiveRecord::Relation) && resource.first.is_a?(Build)
@builds = resource
end
super && @builds
end
def apply
super
ATOM_FEED_ERB.result(binding)
end
private
def content_type
'application/atom+xml;charset=utf-8'
end
end
end