travis-api/lib/travis/api/v2/http/log.rb
Piotr Sarnacki 07cd97a90f Add "after" param to log
after query param allows to get only parts that come after a specified
number, for example "after: 10" will download only parts that come after
10th part.
2014-09-11 14:36:19 +02:00

69 lines
1.7 KiB
Ruby

module Travis
module Api
module V2
module Http
class Log
attr_reader :log, :options
def initialize(log, options = {})
@log = log
@options = options
end
def data
{
'log' => options[:chunked] ? chunked_log_data : log_data,
}
end
private
def log_data
{
'id' => log.id,
'job_id' => log.job_id,
'type' => log.class.name.demodulize,
'body' => log.content
}
end
def chunked_log_data
{
'id' => log.id,
'job_id' => log.job_id,
'type' => log.class.name.demodulize,
'parts' => log_parts
}
end
def log_parts
parts = log.parts
parts = parts.where(number: part_numbers) if part_numbers
parts = parts.where(["number > ?", after]) if after
parts.sort_by(&:number).map do |part|
{
'id' => part.id,
'number' => part.number,
'content' => part.content,
'final' => part.final
}
end
end
def after
after = options['after'].to_i
after == 0 ? nil : after
end
def part_numbers
if numbers = options['part_numbers']
numbers.is_a?(String) ? numbers.split(',').map(&:to_i) : numbers
end
end
end
end
end
end
end