28 lines
695 B
Ruby
28 lines
695 B
Ruby
module Travis::Api::App::Helpers::Responders
|
|
class Json < Base
|
|
ACCEPT_VERSION = /vnd\.travis-ci\.(\d+)\+/
|
|
DEFAULT_VERSION = 'v2'
|
|
|
|
def apply?
|
|
!resource.is_a?(String) && options[:format] == 'json'
|
|
end
|
|
|
|
def apply
|
|
resource = builder.new(self.resource, request.params).data if builder
|
|
resource ||= self.resource || {}
|
|
resource.merge!(flash: flash) unless flash.empty?
|
|
halt resource.to_json
|
|
end
|
|
|
|
private
|
|
|
|
def builder
|
|
@builder ||= Travis::Api.builder(resource, { :version => version }.merge(options))
|
|
end
|
|
|
|
def version
|
|
request.accept.join =~ ACCEPT_VERSION && "v#{$1}" || DEFAULT_VERSION
|
|
end
|
|
end
|
|
end
|