113 lines
4.3 KiB
Ruby
113 lines
4.3 KiB
Ruby
require 'travis/api/serialize/v0/pusher/build/canceled'
|
|
require 'travis/api/serialize/v0/pusher/build/created'
|
|
require 'travis/api/serialize/v0/pusher/build/received'
|
|
require 'travis/api/serialize/v0/pusher/build/started'
|
|
require 'travis/api/serialize/v0/pusher/build/finished'
|
|
|
|
module Travis
|
|
module Api
|
|
module Serialize
|
|
module V0
|
|
module Pusher
|
|
class Build
|
|
include Formats
|
|
|
|
attr_reader :build, :options
|
|
|
|
def initialize(build, options = {})
|
|
@build = build
|
|
@options = options
|
|
end
|
|
|
|
def data
|
|
{
|
|
'build' => build_data(build),
|
|
'commit' => commit_data(build.commit),
|
|
'repository' => repository_data(build.repository)
|
|
}
|
|
end
|
|
|
|
private
|
|
|
|
def build_data(build)
|
|
commit = build.commit
|
|
{
|
|
'id' => build.id,
|
|
'repository_id' => build.repository_id,
|
|
'commit_id' => build.commit_id,
|
|
'number' => build.number,
|
|
'pull_request' => build.pull_request?,
|
|
'pull_request_title' => build.pull_request_title,
|
|
'pull_request_number' => build.pull_request_number,
|
|
'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,
|
|
'event_type' => build.event_type,
|
|
|
|
# this is a legacy thing, we should think about removing it
|
|
'commit' => commit.commit,
|
|
'branch' => commit.branch,
|
|
'message' => commit.message,
|
|
'compare_url' => commit.compare_url,
|
|
'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
|
|
}
|
|
end
|
|
|
|
def commit_data(commit)
|
|
{
|
|
'id' => commit.id,
|
|
'sha' => commit.commit,
|
|
'branch' => commit.branch,
|
|
'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 repository_data(repository)
|
|
{
|
|
'id' => repository.id,
|
|
'slug' => repository.slug,
|
|
'description' => repository.description,
|
|
'private' => repository.private,
|
|
'last_build_id' => repository.last_build_id,
|
|
'last_build_number' => repository.last_build_number,
|
|
'last_build_state' => repository.last_build_state.to_s,
|
|
'last_build_duration' => repository.last_build_duration,
|
|
'last_build_language' => nil,
|
|
'last_build_started_at' => format_date(repository.last_build_started_at),
|
|
'last_build_finished_at' => format_date(repository.last_build_finished_at),
|
|
'github_language' => repository.github_language,
|
|
'default_branch' => {
|
|
'name' => repository.default_branch,
|
|
'last_build_id' => last_build_on_default_branch_id(repository)
|
|
},
|
|
'active' => repository.active,
|
|
'current_build_id' => repository.current_build_id
|
|
}
|
|
end
|
|
|
|
def last_build_on_default_branch_id(repository)
|
|
default_branch = Branch.where(repository_id: repository.id, name: repository.default_branch).first
|
|
|
|
if default_branch
|
|
default_branch.last_build_id
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|