70 lines
1.5 KiB
Ruby
70 lines
1.5 KiB
Ruby
class Travis::Api::App
|
|
module Responders
|
|
class Json < Base
|
|
include Helpers::Accept
|
|
|
|
def apply?
|
|
super && !resource.is_a?(String) && !resource.nil? && accepts_log?
|
|
end
|
|
|
|
def apply
|
|
super
|
|
|
|
result
|
|
end
|
|
|
|
private
|
|
|
|
def content_type
|
|
'application/json;charset=utf-8'
|
|
end
|
|
|
|
def accepts_log?
|
|
return true unless resource.is_a?(Log)
|
|
|
|
chunked = accept_params[:chunked]
|
|
if resource.removed_at
|
|
true
|
|
else
|
|
chunked ? !resource.aggregated_at : true
|
|
end
|
|
end
|
|
|
|
def result
|
|
if builder
|
|
p = params
|
|
p[:root] = options[:root] if options[:root]
|
|
p[:root] = options[:type] if options[:type] && !p[:root]
|
|
builder.new(resource, p).data
|
|
else
|
|
basic_type_resource
|
|
end
|
|
end
|
|
|
|
def builder
|
|
if defined?(@builder)
|
|
@builder
|
|
else
|
|
@builder = Travis::Api.builder(resource, { :version => version }.merge(options))
|
|
end
|
|
end
|
|
|
|
def accept_params
|
|
(options[:accept].params || {}).symbolize_keys
|
|
end
|
|
|
|
def version
|
|
options[:accept].version || Travis::Api::App::Helpers::Accept::DEFAULT_VERSION
|
|
end
|
|
|
|
def params
|
|
(request.params || {}).merge(accept_params)
|
|
end
|
|
|
|
def basic_type_resource
|
|
resource if resource.is_a?(Hash)
|
|
end
|
|
end
|
|
end
|
|
end
|