61 lines
2.1 KiB
Ruby
61 lines
2.1 KiB
Ruby
require 'travis/api/v3/renderer/model_renderer'
|
|
|
|
module Travis::API::V3
|
|
class Renderer::Repository < Renderer::ModelRenderer
|
|
representation(:minimal, :id, :slug)
|
|
representation(:standard, :id, :name, :slug, :description, :github_language, :active, :private, :owner, :last_build, :default_branch)
|
|
|
|
def active
|
|
!!model.active
|
|
end
|
|
|
|
def owner
|
|
return model.owner if include_owner?
|
|
owner_href = Renderer.href(owner_type.to_sym, id: model.owner_id, script_name: script_name)
|
|
|
|
if included_owner? and owner_href
|
|
{ :@href => owner_href }
|
|
else
|
|
result = { :@type => owner_type, :id => model.owner_id, :login => model.owner_name }
|
|
result[:@href] = owner_href if owner_href
|
|
result
|
|
end
|
|
end
|
|
|
|
def include_owner?
|
|
return false if included_owner?
|
|
return true if include? 'repository.owner'.freeze
|
|
return true if include.any? { |i| i.start_with? owner_type or i.start_with? 'owner'.freeze }
|
|
end
|
|
|
|
def included_owner?
|
|
included.any? { |i| i.is_a? Model and i.class.polymorphic_name == model.owner_type and i.id == model.owner_id }
|
|
end
|
|
|
|
def owner_type
|
|
@owner_type ||= model.owner_type.downcase if model.owner_type
|
|
end
|
|
|
|
def last_build
|
|
return nil unless model.last_build_id
|
|
return model.last_build if include_last_build?
|
|
{
|
|
:@type => 'build'.freeze,
|
|
:@href => Renderer.href(:build, script_name: script_name, id: model.last_build_id),
|
|
:id => model.last_build_id,
|
|
:number => model.last_build_number,
|
|
:state => model.last_build_state.to_s,
|
|
:duration => model.last_build_duration,
|
|
:started_at => model.last_build_started_at,
|
|
:finished_at => model.last_build_finished_at,
|
|
}
|
|
end
|
|
|
|
def include_last_build?
|
|
return true if include? 'repository.last_build'.freeze
|
|
return true if include.any? { |i| i.start_with? 'build.'.freeze }
|
|
return true if included.any? { |i| i.is_a? Models::Build and i.id == model.last_build_id }
|
|
end
|
|
end
|
|
end
|