require 'travis/api/serialize/formats' module Travis module Api module Serialize module V2 module Http class Build include Formats attr_reader :build, :options def initialize(build, options = {}) options[:include_jobs] = true unless options.key?(:include_jobs) @build = build @options = options end def data puts "DEBUG: I'm in v2 line 21 travis/api/serialize/v2/http/build.rb:21" { 'build' => build_data(build), 'commit' => commit_data(build.commit, build.repository), 'jobs' => options[:include_jobs] ? build.matrix.map { |job| job_data(job) } : [], 'annotations' => options[:include_jobs] ? Annotations.new(annotations(build), @options).data["annotations"] : [], } end private def build_data(build) { 'id' => build.id, 'repository_id' => build.repository_id, 'commit_id' => build.commit_id, 'number' => build.number, 'event_type' => build.event_type, 'pull_request' => build.pull_request?, 'pull_request_title' => build.pull_request_title, 'pull_request_number' => build.pull_request_number, 'config' => build.obfuscated_config.stringify_keys, 'state' => build.state.to_s, 'started_at' => format_date(build.started_at), 'finished_at' => format_date(build.finished_at), 'duration' => build.duration, 'job_ids' => build.matrix_ids } end def commit_data(commit, repository) { 'id' => commit.id, 'sha' => commit.commit, 'branch' => commit.branch, 'branch_is_default' => branch_is_default(commit, repository), 'message' => commit.message, 'committed_at' => format_date(commit.committed_at), 'author_name' => commit.author_name, 'author_email' => commit.author_email, 'committer_name' => commit.committer_name, 'committer_email' => commit.committer_email, 'compare_url' => commit.compare_url, } end def job_data(job) { 'id' => job.id, 'repository_id' => job.repository_id, 'build_id' => job.source_id, 'commit_id' => job.commit_id, 'log_id' => job.log_id, 'state' => job.state.to_s, 'number' => job.number, 'config' => job.obfuscated_config.stringify_keys, 'started_at' => format_date(job.started_at), 'finished_at' => format_date(job.finished_at), 'queue' => job.queue, 'allow_failure' => job.allow_failure, 'tags' => job.tags, 'annotation_ids' => job.annotation_ids, } end def branch_is_default(commit, repository) repository.default_branch == commit.branch end def annotations(build) build.matrix.map(&:annotations).flatten end end end end end end end