module Travis module Api module Serialize module V0 module Event class Build include Formats attr_reader :build, :repository, :request, :commit, :options def initialize(build, options = {}) @build = build @repository = build.repository @request = build.request @commit = build.commit # @options = options end def data(extra = {}) { 'repository' => repository_data, 'request' => request_data, 'commit' => commit_data, 'build' => build_data, 'jobs' => build.matrix.map { |job| job_data(job) } } end private def build_data { 'id' => build.id, 'repository_id' => build.repository_id, 'commit_id' => build.commit_id, 'number' => build.number, 'pull_request' => build.pull_request?, 'pull_request_number' => build.pull_request_number, 'config' => build.config.try(:except, :source_key), 'state' => build.state.to_s, 'previous_state' => build.previous_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 repository_data { 'id' => repository.id, 'key' => repository.key.try(:public_key), 'slug' => repository.slug, 'name' => repository.name, 'owner_email' => repository.owner_email, 'owner_avatar_url' => repository.owner.try(:avatar_url) } end def request_data { 'token' => request.token, 'head_commit' => (request.head_commit || '') } end def commit_data { '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 job_data(job) { 'id' => job.id, 'number' => job.number, 'state' => job.state.to_s, 'tags' => job.tags } end end end end end end end