diff --git a/lib/travis/api/app.rb b/lib/travis/api/app.rb index 4c30857c..a0ca55b4 100644 --- a/lib/travis/api/app.rb +++ b/lib/travis/api/app.rb @@ -26,10 +26,14 @@ require 'metriks/reporter/logger' require 'metriks/librato_metrics_reporter' require 'travis/support/log_subscriber/active_record_metrics' require 'fileutils' + +module Travis::Api +end + require 'travis/api/app/endpoint' require 'travis/api/app/middleware' require 'travis/api/instruments' -require 'travis/api/v2/http' +require 'travis/api/serialize/v2' require 'travis/api/v3' require 'travis/api/app/stack_instrumentation' require 'travis/api/app/error_handling' diff --git a/lib/travis/api/app/responders/json.rb b/lib/travis/api/app/responders/json.rb index 441039a9..127b691a 100644 --- a/lib/travis/api/app/responders/json.rb +++ b/lib/travis/api/app/responders/json.rb @@ -1,3 +1,5 @@ +require 'travis/api/serialize' + class Travis::Api::App module Responders class Json < Base @@ -46,7 +48,7 @@ class Travis::Api::App if defined?(@builder) @builder else - @builder = Travis::Api.builder(resource, { :version => version }.merge(options)) + @builder = Travis::Api::Serialize.builder(resource, { :version => version }.merge(options)) end end diff --git a/lib/travis/api/serialize/v2.rb b/lib/travis/api/serialize/v2.rb new file mode 100644 index 00000000..78c2bf3d --- /dev/null +++ b/lib/travis/api/serialize/v2.rb @@ -0,0 +1 @@ +require 'travis/api/serialize/v2/http' diff --git a/lib/travis/api/serialize/v2/http.rb b/lib/travis/api/serialize/v2/http.rb new file mode 100644 index 00000000..49e7f42f --- /dev/null +++ b/lib/travis/api/serialize/v2/http.rb @@ -0,0 +1,24 @@ +require 'travis/api/serializer' +require 'travis/api/serialize/v2/http/accounts' +require 'travis/api/serialize/v2/http/annotations' +require 'travis/api/serialize/v2/http/broadcasts' +require 'travis/api/serialize/v2/http/branch' +require 'travis/api/serialize/v2/http/branches' +require 'travis/api/serialize/v2/http/build' +require 'travis/api/serialize/v2/http/builds' +require 'travis/api/serialize/v2/http/caches' +require 'travis/api/serialize/v2/http/hooks' +require 'travis/api/serialize/v2/http/job' +require 'travis/api/serialize/v2/http/jobs' +require 'travis/api/serialize/v2/http/log' +require 'travis/api/serialize/v2/http/permissions' +require 'travis/api/serialize/v2/http/repositories' +require 'travis/api/serialize/v2/http/repository' +require 'travis/api/serialize/v2/http/requests' +require 'travis/api/serialize/v2/http/request' +require 'travis/api/serialize/v2/http/ssl_key' +require 'travis/api/serialize/v2/http/env_var' +require 'travis/api/serialize/v2/http/env_vars' +require 'travis/api/serialize/v2/http/user' +require 'travis/api/serialize/v2/http/validation_error' +require 'travis/api/serialize/v2/http/ssh_key' diff --git a/lib/travis/api/serialize/v2/http/accounts.rb b/lib/travis/api/serialize/v2/http/accounts.rb new file mode 100644 index 00000000..572021d0 --- /dev/null +++ b/lib/travis/api/serialize/v2/http/accounts.rb @@ -0,0 +1,44 @@ +require 'travis/api/serialize/formats' + +module Travis + module Api + module Serialize + module V2 + module Http + class Accounts + include Formats + + attr_reader :accounts, :options + + def initialize(accounts, options = {}) + @accounts = accounts + @options = options + end + + def data + { + :accounts => accounts.map { |account| account_data(account) } + } + end + + private + + def account_data(account) + data = { + 'id' => account.id, + 'name' => account.name, + 'login' => account.login, + 'type' => account.type.underscore, + 'repos_count' => account.repos_count + } + + data['avatar_url'] = account.avatar_url if account.respond_to?(:avatar_url) + + data + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/annotations.rb b/lib/travis/api/serialize/v2/http/annotations.rb new file mode 100644 index 00000000..fc937f2d --- /dev/null +++ b/lib/travis/api/serialize/v2/http/annotations.rb @@ -0,0 +1,38 @@ +require 'travis/api/serialize/formats' + +module Travis + module Api + module Serialize + module V2 + module Http + class Annotations + include Formats + + def initialize(annotations, options = {}) + @annotations = annotations + end + + def data + { + "annotations" => @annotations.map { |annotation| build_annotation(annotation) }, + } + end + + private + + def build_annotation(annotation) + { + "id" => annotation.id, + "job_id" => annotation.job_id, + "description" => annotation.description, + "url" => annotation.url, + "status" => annotation.status, + "provider_name" => annotation.annotation_provider.name, + } + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/branch.rb b/lib/travis/api/serialize/v2/http/branch.rb new file mode 100644 index 00000000..44a9724d --- /dev/null +++ b/lib/travis/api/serialize/v2/http/branch.rb @@ -0,0 +1,31 @@ +require 'travis/api/serialize/formats' +require 'travis/api/serialize/v2/http/branches' + +module Travis + module Api + module Serialize + module V2 + module Http + class Branch < Branches + include Formats + + attr_reader :build, :commit, :options + + def initialize(build, options = {}) + @build = build + @commit = build.commit + @options = options + end + + def data + { + 'branch' => build_data(build), + 'commit' => commit_data(commit) + } + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/branches.rb b/lib/travis/api/serialize/v2/http/branches.rb new file mode 100644 index 00000000..de94e68a --- /dev/null +++ b/lib/travis/api/serialize/v2/http/branches.rb @@ -0,0 +1,64 @@ +require 'travis/api/serialize/formats' + +module Travis + module Api + module Serialize + module V2 + module Http + class Branches + include Formats + + attr_reader :builds, :commits, :options + + def initialize(builds, options = {}) + builds = builds.last_finished_builds_by_branches if builds.is_a?(Repository) # TODO remove, bc + @builds = builds + @commits = builds.map(&:commit) + @options = options + end + + def data + { + 'branches' => builds.map { |build| build_data(build) }, + 'commits' => commits.map { |commit| commit_data(commit) } + } + end + + private + + def build_data(build) + { + 'id' => build.id, + 'repository_id' => build.repository_id, + 'commit_id' => build.commit_id, + 'number' => build.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.map { |job| job.id }, + 'pull_request' => build.pull_request? + } + 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 + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/broadcasts.rb b/lib/travis/api/serialize/v2/http/broadcasts.rb new file mode 100644 index 00000000..fc1afbb1 --- /dev/null +++ b/lib/travis/api/serialize/v2/http/broadcasts.rb @@ -0,0 +1,33 @@ +module Travis + module Api + module Serialize + module V2 + module Http + class Broadcasts + attr_reader :broadcasts, :options + + def initialize(broadcasts, options = {}) + @broadcasts = broadcasts + @options = options + end + + def data + { + 'broadcasts' => broadcasts.map { |broadcast| broadcast_data(broadcast) } + } + end + + private + + def broadcast_data(broadcast) + { + 'id' => broadcast.id, + 'message' => broadcast.message + } + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/build.rb b/lib/travis/api/serialize/v2/http/build.rb new file mode 100644 index 00000000..27ff3416 --- /dev/null +++ b/lib/travis/api/serialize/v2/http/build.rb @@ -0,0 +1,97 @@ +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 + { + '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 diff --git a/lib/travis/api/serialize/v2/http/builds.rb b/lib/travis/api/serialize/v2/http/builds.rb new file mode 100644 index 00000000..d2309208 --- /dev/null +++ b/lib/travis/api/serialize/v2/http/builds.rb @@ -0,0 +1,71 @@ +require 'travis/api/serialize/formats' + +module Travis + module Api + module Serialize + module V2 + module Http + class Builds + include Formats + + attr_reader :builds, :commits, :options + + def initialize(builds, options = {}) + @builds = builds + @commits = builds.map(&:commit) + @options = options + end + + def data + { + 'builds' => builds.map { |build| build_data(build) }, + 'commits' => commits.map { |commit| commit_data(commit) } + } + 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' => matrix_ids(build) + } + end + + def matrix_ids(build) + build.cached_matrix_ids || build.matrix_ids + 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, + 'pull_request_number' => commit.pull_request_number + } + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/caches.rb b/lib/travis/api/serialize/v2/http/caches.rb new file mode 100644 index 00000000..b5167dd7 --- /dev/null +++ b/lib/travis/api/serialize/v2/http/caches.rb @@ -0,0 +1,37 @@ +require 'travis/api/serialize/formats' + +module Travis + module Api + module Serialize + module V2 + module Http + class Caches + include Formats + attr_reader :caches, :options + + def initialize(caches, options = {}) + @caches = caches + @options = options + end + + def data + { 'caches' => caches.map { |cache| cache_data(cache) } } + end + + private + + def cache_data(cache) + { + 'repository_id' => cache.repository.id, + 'size' => cache.size, + 'slug' => cache.slug, + 'branch' => cache.branch, + 'last_modified' => format_date(cache.last_modified) + } + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/env_var.rb b/lib/travis/api/serialize/v2/http/env_var.rb new file mode 100644 index 00000000..23fce2dc --- /dev/null +++ b/lib/travis/api/serialize/v2/http/env_var.rb @@ -0,0 +1,25 @@ +module Travis + module Api + module Serialize + module V2 + module Http + class EnvVar < Travis::Api::Serializer + attributes :id, :name, :value, :public, :repository_id + + def value + if object.public? + object.value.decrypt + end + end + + def serializable_hash + hash = super + hash.delete :value unless object.public? + hash + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/env_vars.rb b/lib/travis/api/serialize/v2/http/env_vars.rb new file mode 100644 index 00000000..2091264e --- /dev/null +++ b/lib/travis/api/serialize/v2/http/env_vars.rb @@ -0,0 +1,2 @@ +class Travis::Api::Serialize::V2::Http::EnvVars < Travis::Api::ArraySerializer +end diff --git a/lib/travis/api/v2/http/error.rb b/lib/travis/api/serialize/v2/http/error.rb similarity index 100% rename from lib/travis/api/v2/http/error.rb rename to lib/travis/api/serialize/v2/http/error.rb diff --git a/lib/travis/api/serialize/v2/http/hooks.rb b/lib/travis/api/serialize/v2/http/hooks.rb new file mode 100644 index 00000000..937ae829 --- /dev/null +++ b/lib/travis/api/serialize/v2/http/hooks.rb @@ -0,0 +1,38 @@ +module Travis + module Api + module Serialize + module V2 + module Http + class Hooks + attr_reader :hooks, :options + + def initialize(hooks, options = {}) + @hooks = hooks + @options = options + end + + def data + { + 'hooks' => hooks.map { |hook| hook_data(hook) }, + } + end + + private + + def hook_data(hook) + { + 'id' => hook.id, + 'name' => hook.name, + 'owner_name' => hook.owner_name, + 'description' => hook.description, + 'active' => hook.active, + 'private' => hook.private, + 'admin' => hook.admin? + } + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/job.rb b/lib/travis/api/serialize/v2/http/job.rb new file mode 100644 index 00000000..436be37c --- /dev/null +++ b/lib/travis/api/serialize/v2/http/job.rb @@ -0,0 +1,72 @@ +require 'travis/api/serialize/formats' + +module Travis + module Api + module Serialize + module V2 + module Http + class Job + include Formats + + attr_reader :job, :options + + def initialize(job, options = {}) + @job = job + @options = options + end + + def data + { + 'job' => job_data(job), + 'commit' => commit_data(job.commit, job.repository), + 'annotations' => Annotations.new(job.annotations, @options).data["annotations"], + } + end + + private + + def job_data(job) + { + 'id' => job.id, + 'repository_id' => job.repository_id, + 'repository_slug' => job.repository.slug, + 'build_id' => job.source_id, + 'commit_id' => job.commit_id, + 'log_id' => job.log_id, + 'number' => job.number, + 'config' => job.obfuscated_config.stringify_keys, + 'state' => job.state.to_s, + '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 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 branch_is_default(commit, repository) + repository.default_branch == commit.branch + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/jobs.rb b/lib/travis/api/serialize/v2/http/jobs.rb new file mode 100644 index 00000000..f8fcff73 --- /dev/null +++ b/lib/travis/api/serialize/v2/http/jobs.rb @@ -0,0 +1,65 @@ +require 'travis/api/serialize/formats' + +module Travis + module Api + module Serialize + module V2 + module Http + class Jobs + include Formats + + attr_reader :jobs, :options + + def initialize(jobs, options = {}) + @jobs = jobs + @options = options + end + + def data + { + 'jobs' => jobs.map { |job| job_data(job) }, + 'commits' => jobs.map { |job| commit_data(job.commit) } + } + end + + private + + def job_data(job) + { + 'id' => job.id, + 'repository_id' => job.repository_id, + 'repository_slug' => job.repository.slug, + 'build_id' => job.source_id, + 'commit_id' => job.commit_id, + 'log_id' => job.log_id, + 'number' => job.number, + 'config' => job.obfuscated_config.stringify_keys, + 'state' => job.state.to_s, + '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 + } + 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 + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/log.rb b/lib/travis/api/serialize/v2/http/log.rb new file mode 100644 index 00000000..f89b6af9 --- /dev/null +++ b/lib/travis/api/serialize/v2/http/log.rb @@ -0,0 +1,80 @@ +module Travis + module Api + module Serialize + module V2 + module Http + class Log + attr_reader :log, :options + + def initialize(log, options = {}) + @log = log + @options = options + end + + def data + log_hash = options[:chunked] ? chunked_log_data : log_data + if log.removed_at + log_hash['removed_at'] = log.removed_at + log_hash['removed_by'] = log.removed_by.name || log.removed_by.login + end + + { + 'log' => log_hash, + } + 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 + if log.removed_at + # if log is removed we don't have actual parts + parts = [{ 'number' => 1, 'content' => log.content, 'final' => true }] + else + 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 + 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 +end diff --git a/lib/travis/api/serialize/v2/http/permissions.rb b/lib/travis/api/serialize/v2/http/permissions.rb new file mode 100644 index 00000000..5db379f9 --- /dev/null +++ b/lib/travis/api/serialize/v2/http/permissions.rb @@ -0,0 +1,52 @@ +module Travis + module Api + module Serialize + module V2 + module Http + class Permissions + attr_reader :permissions, :options + + def initialize(permissions, options = {}) + @permissions = permissions + @options = options + end + + def data + { + 'permissions' => repo_ids, + 'admin' => admin_ids, + 'pull' => pull_ids, + 'push' => push_ids + } + end + + private + def filtered_ids(perm = nil) + if perm + permissions.find_all { |p| p.send("#{perm}?") }.map { |permission| permission.repository_id } + else + permissions.map { |permission| permission.repository_id } + end + end + + def repo_ids + filtered_ids + end + + def admin_ids + filtered_ids(:admin) + end + + def pull_ids + filtered_ids(:pull) + end + + def push_ids + filtered_ids(:push) + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/repositories.rb b/lib/travis/api/serialize/v2/http/repositories.rb new file mode 100644 index 00000000..d153ea39 --- /dev/null +++ b/lib/travis/api/serialize/v2/http/repositories.rb @@ -0,0 +1,47 @@ +require 'travis/api/serialize/formats' + +module Travis + module Api + module Serialize + module V2 + module Http + class Repositories + include Formats + + attr_reader :repositories, :options + + def initialize(repositories, options = {}) + @repositories = repositories + @options = options + end + + def data + { + 'repos' => repositories.map { |repository| repository_data(repository) } + } + end + + private + + def repository_data(repository) + { + 'id' => repository.id, + 'slug' => repository.slug, + 'description' => repository.description, + '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), + 'active' => repository.active, + 'github_language' => repository.github_language + } + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/repository.rb b/lib/travis/api/serialize/v2/http/repository.rb new file mode 100644 index 00000000..3125d7a0 --- /dev/null +++ b/lib/travis/api/serialize/v2/http/repository.rb @@ -0,0 +1,47 @@ +require 'travis/api/serialize/formats' + +module Travis + module Api + module Serialize + module V2 + module Http + class Repository + include Formats + + attr_reader :repository, :options + + def initialize(repository, options = {}) + @repository = repository + end + + def data + { + 'repo' => repository_data(repository) + } + end + + private + + # TODO why does this not include the last build? (i.e. 'builds' => { last build here }) + def repository_data(repository) + { + 'id' => repository.id, + 'slug' => repository.slug, + 'active' => repository.active, + 'description' => repository.description, + '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 + } + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/request.rb b/lib/travis/api/serialize/v2/http/request.rb new file mode 100644 index 00000000..8b0b434f --- /dev/null +++ b/lib/travis/api/serialize/v2/http/request.rb @@ -0,0 +1,75 @@ +require 'travis/api/serialize/formats' + +module Travis + module Api + module Serialize + module V2 + module Http + class Request + include Formats + attr_reader :request, :commit, :options + + def initialize(request, options = {}) + @request = request + @commit = request.commit + @options = options + end + + def data + data = { + 'request' => request_data + } + if commit + data['commit'] = commit_data + end + data + end + + private + + def request_data + data = { + 'id' => request.id, + 'repository_id' => request.repository_id, + 'commit_id' => request.commit_id, + 'created_at' => format_date(request.created_at), + 'owner_id' => request.owner_id, + 'owner_type' => request.owner_type, + 'event_type' => request.event_type, + 'base_commit' => request.base_commit, + 'head_commit' => request.head_commit, + 'result' => request.result, + 'message' => request.message, + 'pull_request' => request.pull_request?, + 'pull_request_number' => request.pull_request_number, + 'pull_request_title' => request.pull_request_title, + 'branch' => request.branch_name, + 'tag' => request.tag_name + } + + data['build_id'] = request.builds.first.id if request.builds.present? + + data + 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, + 'pull_request_number' => commit.pull_request_number + } + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/requests.rb b/lib/travis/api/serialize/v2/http/requests.rb new file mode 100644 index 00000000..97a6485e --- /dev/null +++ b/lib/travis/api/serialize/v2/http/requests.rb @@ -0,0 +1,72 @@ +require 'travis/api/serialize/formats' + +module Travis + module Api + module Serialize + module V2 + module Http + class Requests + include Formats + attr_reader :requests, :commits, :options + + def initialize(requests, options = {}) + @requests = requests + @commits = requests.map(&:commit) + @options = options + end + + def data + { + 'requests' => requests.map { |request| request_data(request) }, + 'commits' => commits.compact.map { |commit| commit_data(commit) } + } + end + + private + + def request_data(request) + data = { + 'id' => request.id, + 'repository_id' => request.repository_id, + 'commit_id' => request.commit_id, + 'created_at' => format_date(request.created_at), + 'owner_id' => request.owner_id, + 'owner_type' => request.owner_type, + 'event_type' => request.event_type, + 'base_commit' => request.base_commit, + 'head_commit' => request.head_commit, + 'result' => request.result, + 'message' => request.message, + 'pull_request' => request.pull_request?, + 'pull_request_number' => request.pull_request_number, + 'pull_request_title' => request.pull_request_title, + 'branch' => request.branch_name, + 'tag' => request.tag_name + } + + data['build_id'] = request.builds.first.id if request.builds.present? + + data + 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, + 'pull_request_number' => commit.pull_request_number + } + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/ssh_key.rb b/lib/travis/api/serialize/v2/http/ssh_key.rb new file mode 100644 index 00000000..2f1c7a5b --- /dev/null +++ b/lib/travis/api/serialize/v2/http/ssh_key.rb @@ -0,0 +1,28 @@ +require 'openssl' +require 'travis/private_key' + +module Travis + module Api + module Serialize + module V2 + module Http + class SshKey < Travis::Api::Serializer + attributes :id, :description, :fingerprint + + def id + object.repository_id + end + + def fingerprint + value = object.value.decrypt + return unless value + PrivateKey.new(value).fingerprint + rescue OpenSSL::PKey::RSAError + nil + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/ssl_key.rb b/lib/travis/api/serialize/v2/http/ssl_key.rb new file mode 100644 index 00000000..37402b28 --- /dev/null +++ b/lib/travis/api/serialize/v2/http/ssl_key.rb @@ -0,0 +1,28 @@ +module Travis + module Api + module Serialize + module V2 + module Http + class SslKey + attr_reader :key + + def initialize(key, options = {}) + @key = key + end + + def fingerprint + PrivateKey.new(key.private_key).fingerprint + end + + def data + { + 'key' => key.public_key, + 'fingerprint' => fingerprint + } + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/user.rb b/lib/travis/api/serialize/v2/http/user.rb new file mode 100644 index 00000000..e7bbbf55 --- /dev/null +++ b/lib/travis/api/serialize/v2/http/user.rb @@ -0,0 +1,50 @@ +require 'travis/api/serialize/formats' + +module Travis + module Api + module Serialize + module V2 + module Http + class User + include Formats + + attr_reader :user, :options + + def initialize(user, options = {}) + @user = user + @options = options + end + + def data + { + 'user' => user_data, + } + end + + private + + def user_data + { + 'id' => user.id, + 'name' => user.name, + 'login' => user.login, + 'email' => user.email, + 'gravatar_id' => user.email ? Digest::MD5.hexdigest(user.email) : "", + 'locale' => user.locale, + 'is_syncing' => user.syncing?, + 'synced_at' => format_date(user.synced_at), + 'correct_scopes' => user.correct_scopes?, + 'created_at' => format_date(user.created_at), + 'channels' => channels + } + end + + def channels + ["user-#{user.id}"] + user.repository_ids.map { |id| "repo-#{id}" } + end + end + end + end + end + end +end diff --git a/lib/travis/api/serialize/v2/http/validation_error.rb b/lib/travis/api/serialize/v2/http/validation_error.rb new file mode 100644 index 00000000..22b882a1 --- /dev/null +++ b/lib/travis/api/serialize/v2/http/validation_error.rb @@ -0,0 +1,40 @@ +module Travis + module Api + module Serialize + module V2 + module Http + class ValidationError + attr_reader :resource + + def initialize(resource, options = {}) + @resource = resource + end + + def data + response = { + message: 'Validation failed' + } + resource.errors.to_hash.each do |name, errors| + response['errors'] ||= [] + errors.each do |error_code| + response['errors'] << { field: name, code: code(error_code) } + end + end + + response + end + + def code(error_code) + case error_code + when :blank + 'missing_field' + else + error_code.to_s + end + end + end + end + end + end + end +end diff --git a/lib/travis/api/serializer.rb b/lib/travis/api/serializer.rb index a34ecdff..caac66df 100644 --- a/lib/travis/api/serializer.rb +++ b/lib/travis/api/serializer.rb @@ -14,7 +14,7 @@ module Travis end def initialize(resource, options) - options[:each_serializer] ||= Travis::Api::V2::Http.const_get(options[:root].to_s.singularize.camelize) + options[:each_serializer] ||= Travis::Api::Serialize::V2::Http.const_get(options[:root].to_s.singularize.camelize) super(resource, options) end end diff --git a/lib/travis/api/v2.rb b/lib/travis/api/v2.rb deleted file mode 100644 index 8b452406..00000000 --- a/lib/travis/api/v2.rb +++ /dev/null @@ -1,8 +0,0 @@ -module Travis - module Api - module V2 - require 'travis/api/v2/http' - end - end -end - diff --git a/lib/travis/api/v2/http.rb b/lib/travis/api/v2/http.rb deleted file mode 100644 index a733b364..00000000 --- a/lib/travis/api/v2/http.rb +++ /dev/null @@ -1,33 +0,0 @@ -require 'travis/api/serializer' - -module Travis - module Api - module V2 - module Http - require 'travis/api/v2/http/accounts' - require 'travis/api/v2/http/annotations' - require 'travis/api/v2/http/broadcasts' - require 'travis/api/v2/http/branch' - require 'travis/api/v2/http/branches' - require 'travis/api/v2/http/build' - require 'travis/api/v2/http/builds' - require 'travis/api/v2/http/caches' - require 'travis/api/v2/http/hooks' - require 'travis/api/v2/http/job' - require 'travis/api/v2/http/jobs' - require 'travis/api/v2/http/log' - require 'travis/api/v2/http/permissions' - require 'travis/api/v2/http/repositories' - require 'travis/api/v2/http/repository' - require 'travis/api/v2/http/requests' - require 'travis/api/v2/http/request' - require 'travis/api/v2/http/ssl_key' - require 'travis/api/v2/http/env_var' - require 'travis/api/v2/http/env_vars' - require 'travis/api/v2/http/user' - require 'travis/api/v2/http/validation_error' - require 'travis/api/v2/http/ssh_key' - end - end - end -end diff --git a/lib/travis/api/v2/http/accounts.rb b/lib/travis/api/v2/http/accounts.rb deleted file mode 100644 index 5b8be3ef..00000000 --- a/lib/travis/api/v2/http/accounts.rb +++ /dev/null @@ -1,42 +0,0 @@ -module Travis - module Api - module V2 - module Http - class Accounts - include Formats - - attr_reader :accounts, :options - - def initialize(accounts, options = {}) - @accounts = accounts - @options = options - end - - def data - { - :accounts => accounts.map { |account| account_data(account) } - } - end - - private - - def account_data(account) - data = { - 'id' => account.id, - 'name' => account.name, - 'login' => account.login, - 'type' => account.type.underscore, - 'repos_count' => account.repos_count - } - - data['avatar_url'] = account.avatar_url if account.respond_to?(:avatar_url) - - data - end - end - end - end - end -end - - diff --git a/lib/travis/api/v2/http/annotations.rb b/lib/travis/api/v2/http/annotations.rb deleted file mode 100644 index ac750c72..00000000 --- a/lib/travis/api/v2/http/annotations.rb +++ /dev/null @@ -1,34 +0,0 @@ -module Travis - module Api - module V2 - module Http - class Annotations - include Formats - - def initialize(annotations, options = {}) - @annotations = annotations - end - - def data - { - "annotations" => @annotations.map { |annotation| build_annotation(annotation) }, - } - end - - private - - def build_annotation(annotation) - { - "id" => annotation.id, - "job_id" => annotation.job_id, - "description" => annotation.description, - "url" => annotation.url, - "status" => annotation.status, - "provider_name" => annotation.annotation_provider.name, - } - end - end - end - end - end -end diff --git a/lib/travis/api/v2/http/branch.rb b/lib/travis/api/v2/http/branch.rb deleted file mode 100644 index 833e755e..00000000 --- a/lib/travis/api/v2/http/branch.rb +++ /dev/null @@ -1,28 +0,0 @@ -require 'travis/api/v2/http/branches' - -module Travis - module Api - module V2 - module Http - class Branch < Branches - include Formats - - attr_reader :build, :commit, :options - - def initialize(build, options = {}) - @build = build - @commit = build.commit - @options = options - end - - def data - { - 'branch' => build_data(build), - 'commit' => commit_data(commit) - } - end - end - end - end - end -end diff --git a/lib/travis/api/v2/http/branches.rb b/lib/travis/api/v2/http/branches.rb deleted file mode 100644 index a1aaef37..00000000 --- a/lib/travis/api/v2/http/branches.rb +++ /dev/null @@ -1,60 +0,0 @@ -module Travis - module Api - module V2 - module Http - class Branches - include Formats - - attr_reader :builds, :commits, :options - - def initialize(builds, options = {}) - builds = builds.last_finished_builds_by_branches if builds.is_a?(Repository) # TODO remove, bc - @builds = builds - @commits = builds.map(&:commit) - @options = options - end - - def data - { - 'branches' => builds.map { |build| build_data(build) }, - 'commits' => commits.map { |commit| commit_data(commit) } - } - end - - private - - def build_data(build) - { - 'id' => build.id, - 'repository_id' => build.repository_id, - 'commit_id' => build.commit_id, - 'number' => build.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.map { |job| job.id }, - 'pull_request' => build.pull_request? - } - 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 - end - end - end - end -end diff --git a/lib/travis/api/v2/http/broadcasts.rb b/lib/travis/api/v2/http/broadcasts.rb deleted file mode 100644 index a95d775d..00000000 --- a/lib/travis/api/v2/http/broadcasts.rb +++ /dev/null @@ -1,32 +0,0 @@ -module Travis - module Api - module V2 - module Http - class Broadcasts - attr_reader :broadcasts, :options - - def initialize(broadcasts, options = {}) - @broadcasts = broadcasts - @options = options - end - - def data - { - 'broadcasts' => broadcasts.map { |broadcast| broadcast_data(broadcast) } - } - end - - private - - def broadcast_data(broadcast) - { - 'id' => broadcast.id, - 'message' => broadcast.message - } - end - end - end - end - end -end - diff --git a/lib/travis/api/v2/http/build.rb b/lib/travis/api/v2/http/build.rb deleted file mode 100644 index 394c4ac8..00000000 --- a/lib/travis/api/v2/http/build.rb +++ /dev/null @@ -1,93 +0,0 @@ -module Travis - module Api - 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 - { - '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 diff --git a/lib/travis/api/v2/http/builds.rb b/lib/travis/api/v2/http/builds.rb deleted file mode 100644 index 5b234115..00000000 --- a/lib/travis/api/v2/http/builds.rb +++ /dev/null @@ -1,67 +0,0 @@ -module Travis - module Api - module V2 - module Http - class Builds - include Formats - - attr_reader :builds, :commits, :options - - def initialize(builds, options = {}) - @builds = builds - @commits = builds.map(&:commit) - @options = options - end - - def data - { - 'builds' => builds.map { |build| build_data(build) }, - 'commits' => commits.map { |commit| commit_data(commit) } - } - 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' => matrix_ids(build) - } - end - - def matrix_ids(build) - build.cached_matrix_ids || build.matrix_ids - 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, - 'pull_request_number' => commit.pull_request_number - } - end - end - end - end - end -end diff --git a/lib/travis/api/v2/http/caches.rb b/lib/travis/api/v2/http/caches.rb deleted file mode 100644 index d36efced..00000000 --- a/lib/travis/api/v2/http/caches.rb +++ /dev/null @@ -1,33 +0,0 @@ -module Travis - module Api - module V2 - module Http - class Caches - include Formats - attr_reader :caches, :options - - def initialize(caches, options = {}) - @caches = caches - @options = options - end - - def data - { 'caches' => caches.map { |cache| cache_data(cache) } } - end - - private - - def cache_data(cache) - { - 'repository_id' => cache.repository.id, - 'size' => cache.size, - 'slug' => cache.slug, - 'branch' => cache.branch, - 'last_modified' => format_date(cache.last_modified) - } - end - end - end - end - end -end \ No newline at end of file diff --git a/lib/travis/api/v2/http/env_var.rb b/lib/travis/api/v2/http/env_var.rb deleted file mode 100644 index 864392a1..00000000 --- a/lib/travis/api/v2/http/env_var.rb +++ /dev/null @@ -1,23 +0,0 @@ -module Travis - module Api - module V2 - module Http - class EnvVar < Travis::Api::Serializer - attributes :id, :name, :value, :public, :repository_id - - def value - if object.public? - object.value.decrypt - end - end - - def serializable_hash - hash = super - hash.delete :value unless object.public? - hash - end - end - end - end - end -end diff --git a/lib/travis/api/v2/http/env_vars.rb b/lib/travis/api/v2/http/env_vars.rb deleted file mode 100644 index 601dcc3a..00000000 --- a/lib/travis/api/v2/http/env_vars.rb +++ /dev/null @@ -1,2 +0,0 @@ -class Travis::Api::V2::Http::EnvVars < Travis::Api::ArraySerializer -end diff --git a/lib/travis/api/v2/http/hooks.rb b/lib/travis/api/v2/http/hooks.rb deleted file mode 100644 index 34203517..00000000 --- a/lib/travis/api/v2/http/hooks.rb +++ /dev/null @@ -1,37 +0,0 @@ -module Travis - module Api - module V2 - module Http - class Hooks - attr_reader :hooks, :options - - def initialize(hooks, options = {}) - @hooks = hooks - @options = options - end - - def data - { - 'hooks' => hooks.map { |hook| hook_data(hook) }, - } - end - - private - - def hook_data(hook) - { - 'id' => hook.id, - 'name' => hook.name, - 'owner_name' => hook.owner_name, - 'description' => hook.description, - 'active' => hook.active, - 'private' => hook.private, - 'admin' => hook.admin? - } - end - end - end - end - end -end - diff --git a/lib/travis/api/v2/http/job.rb b/lib/travis/api/v2/http/job.rb deleted file mode 100644 index 92366474..00000000 --- a/lib/travis/api/v2/http/job.rb +++ /dev/null @@ -1,68 +0,0 @@ -module Travis - module Api - module V2 - module Http - class Job - include Formats - - attr_reader :job, :options - - def initialize(job, options = {}) - @job = job - @options = options - end - - def data - { - 'job' => job_data(job), - 'commit' => commit_data(job.commit, job.repository), - 'annotations' => Annotations.new(job.annotations, @options).data["annotations"], - } - end - - private - - def job_data(job) - { - 'id' => job.id, - 'repository_id' => job.repository_id, - 'repository_slug' => job.repository.slug, - 'build_id' => job.source_id, - 'commit_id' => job.commit_id, - 'log_id' => job.log_id, - 'number' => job.number, - 'config' => job.obfuscated_config.stringify_keys, - 'state' => job.state.to_s, - '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 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 branch_is_default(commit, repository) - repository.default_branch == commit.branch - end - end - end - end - end -end diff --git a/lib/travis/api/v2/http/log.rb b/lib/travis/api/v2/http/log.rb deleted file mode 100644 index 1ace5cd8..00000000 --- a/lib/travis/api/v2/http/log.rb +++ /dev/null @@ -1,79 +0,0 @@ -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_hash = options[:chunked] ? chunked_log_data : log_data - if log.removed_at - log_hash['removed_at'] = log.removed_at - log_hash['removed_by'] = log.removed_by.name || log.removed_by.login - end - - { - 'log' => log_hash, - } - 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 - if log.removed_at - # if log is removed we don't have actual parts - parts = [{ 'number' => 1, 'content' => log.content, 'final' => true }] - else - 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 - 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 - diff --git a/lib/travis/api/v2/http/permissions.rb b/lib/travis/api/v2/http/permissions.rb deleted file mode 100644 index a4c494c1..00000000 --- a/lib/travis/api/v2/http/permissions.rb +++ /dev/null @@ -1,50 +0,0 @@ -module Travis - module Api - module V2 - module Http - class Permissions - attr_reader :permissions, :options - - def initialize(permissions, options = {}) - @permissions = permissions - @options = options - end - - def data - { - 'permissions' => repo_ids, - 'admin' => admin_ids, - 'pull' => pull_ids, - 'push' => push_ids - } - end - - private - def filtered_ids(perm = nil) - if perm - permissions.find_all { |p| p.send("#{perm}?") }.map { |permission| permission.repository_id } - else - permissions.map { |permission| permission.repository_id } - end - end - - def repo_ids - filtered_ids - end - - def admin_ids - filtered_ids(:admin) - end - - def pull_ids - filtered_ids(:pull) - end - - def push_ids - filtered_ids(:push) - end - end - end - end - end -end diff --git a/lib/travis/api/v2/http/request.rb b/lib/travis/api/v2/http/request.rb deleted file mode 100644 index 709512e5..00000000 --- a/lib/travis/api/v2/http/request.rb +++ /dev/null @@ -1,71 +0,0 @@ -module Travis - module Api - module V2 - module Http - class Request - include Formats - attr_reader :request, :commit, :options - - def initialize(request, options = {}) - @request = request - @commit = request.commit - @options = options - end - - def data - data = { - 'request' => request_data - } - if commit - data['commit'] = commit_data - end - data - end - - private - - def request_data - data = { - 'id' => request.id, - 'repository_id' => request.repository_id, - 'commit_id' => request.commit_id, - 'created_at' => format_date(request.created_at), - 'owner_id' => request.owner_id, - 'owner_type' => request.owner_type, - 'event_type' => request.event_type, - 'base_commit' => request.base_commit, - 'head_commit' => request.head_commit, - 'result' => request.result, - 'message' => request.message, - 'pull_request' => request.pull_request?, - 'pull_request_number' => request.pull_request_number, - 'pull_request_title' => request.pull_request_title, - 'branch' => request.branch_name, - 'tag' => request.tag_name - } - - data['build_id'] = request.builds.first.id if request.builds.present? - - data - 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, - 'pull_request_number' => commit.pull_request_number - } - end - end - end - end - end -end diff --git a/lib/travis/api/v2/http/requests.rb b/lib/travis/api/v2/http/requests.rb deleted file mode 100644 index d55fe8b4..00000000 --- a/lib/travis/api/v2/http/requests.rb +++ /dev/null @@ -1,68 +0,0 @@ -module Travis - module Api - module V2 - module Http - class Requests - include Formats - attr_reader :requests, :commits, :options - - def initialize(requests, options = {}) - @requests = requests - @commits = requests.map(&:commit) - @options = options - end - - def data - { - 'requests' => requests.map { |request| request_data(request) }, - 'commits' => commits.compact.map { |commit| commit_data(commit) } - } - end - - private - - def request_data(request) - data = { - 'id' => request.id, - 'repository_id' => request.repository_id, - 'commit_id' => request.commit_id, - 'created_at' => format_date(request.created_at), - 'owner_id' => request.owner_id, - 'owner_type' => request.owner_type, - 'event_type' => request.event_type, - 'base_commit' => request.base_commit, - 'head_commit' => request.head_commit, - 'result' => request.result, - 'message' => request.message, - 'pull_request' => request.pull_request?, - 'pull_request_number' => request.pull_request_number, - 'pull_request_title' => request.pull_request_title, - 'branch' => request.branch_name, - 'tag' => request.tag_name - } - - data['build_id'] = request.builds.first.id if request.builds.present? - - data - 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, - 'pull_request_number' => commit.pull_request_number - } - end - end - end - end - end -end diff --git a/lib/travis/api/v2/http/ssh_key.rb b/lib/travis/api/v2/http/ssh_key.rb deleted file mode 100644 index afff8987..00000000 --- a/lib/travis/api/v2/http/ssh_key.rb +++ /dev/null @@ -1,26 +0,0 @@ -require 'openssl' -require 'travis/private_key' - -module Travis - module Api - module V2 - module Http - class SshKey < Travis::Api::Serializer - attributes :id, :description, :fingerprint - - def id - object.repository_id - end - - def fingerprint - value = object.value.decrypt - return unless value - PrivateKey.new(value).fingerprint - rescue OpenSSL::PKey::RSAError - nil - end - end - end - end - end -end diff --git a/lib/travis/api/v2/http/ssl_key.rb b/lib/travis/api/v2/http/ssl_key.rb deleted file mode 100644 index 51754f12..00000000 --- a/lib/travis/api/v2/http/ssl_key.rb +++ /dev/null @@ -1,27 +0,0 @@ -module Travis - module Api - module V2 - module Http - class SslKey - attr_reader :key - - def initialize(key, options = {}) - @key = key - end - - def fingerprint - PrivateKey.new(key.private_key).fingerprint - end - - def data - { - 'key' => key.public_key, - 'fingerprint' => fingerprint - } - end - end - end - end - end -end - diff --git a/lib/travis/api/v2/http/user.rb b/lib/travis/api/v2/http/user.rb deleted file mode 100644 index 51f17a99..00000000 --- a/lib/travis/api/v2/http/user.rb +++ /dev/null @@ -1,48 +0,0 @@ -module Travis - module Api - module V2 - module Http - class User - include Formats - - attr_reader :user, :options - - def initialize(user, options = {}) - @user = user - @options = options - end - - def data - { - 'user' => user_data, - } - end - - private - - def user_data - { - 'id' => user.id, - 'name' => user.name, - 'login' => user.login, - 'email' => user.email, - 'gravatar_id' => user.email ? Digest::MD5.hexdigest(user.email) : "", - 'locale' => user.locale, - 'is_syncing' => user.syncing?, - 'synced_at' => format_date(user.synced_at), - 'correct_scopes' => user.correct_scopes?, - 'created_at' => format_date(user.created_at), - 'channels' => channels - } - end - - def channels - ["user-#{user.id}"] + user.repository_ids.map { |id| "repo-#{id}" } - end - end - end - end - end -end - - diff --git a/lib/travis/api/v2/http/validation_error.rb b/lib/travis/api/v2/http/validation_error.rb deleted file mode 100644 index dc5cfe33..00000000 --- a/lib/travis/api/v2/http/validation_error.rb +++ /dev/null @@ -1,39 +0,0 @@ -module Travis - module Api - module V2 - module Http - class ValidationError - attr_reader :resource - - def initialize(resource, options = {}) - @resource = resource - end - - def data - response = { - message: 'Validation failed' - } - resource.errors.to_hash.each do |name, errors| - response['errors'] ||= [] - errors.each do |error_code| - response['errors'] << { field: name, code: code(error_code) } - end - end - - response - end - - def code(error_code) - case error_code - when :blank - 'missing_field' - else - error_code.to_s - end - end - end - end - end - end -end - diff --git a/spec/integration/settings_endpoint_spec.rb b/spec/integration/settings_endpoint_spec.rb index 86d2a942..fc25ebcd 100644 --- a/spec/integration/settings_endpoint_spec.rb +++ b/spec/integration/settings_endpoint_spec.rb @@ -22,16 +22,16 @@ describe Travis::Api::App::SettingsEndpoint do serializer_class = Class.new(Travis::Api::Serializer) do attributes :id, :name end - Travis::Api::V2::Http.const_set(:Item, serializer_class) - Travis::Api::V2::Http.const_set(:Items, Travis::Api::ArraySerializer) + Travis::Api::Serialize::V2::Http.const_set(:Item, serializer_class) + Travis::Api::Serialize::V2::Http.const_set(:Items, Travis::Api::ArraySerializer) add_settings_endpoint :items end after do Travis::Api::App::Endpoint.send :remove_const, :Items - Travis::Api::V2::Http.send :remove_const, :Items - Travis::Api::V2::Http.send :remove_const, :Item + Travis::Api::Serialize::V2::Http.send :remove_const, :Items + Travis::Api::Serialize::V2::Http.send :remove_const, :Item end describe 'with authenticated user' do diff --git a/spec/integration/singleton_settings_endpoint_spec.rb b/spec/integration/singleton_settings_endpoint_spec.rb index 08ed54af..b465770a 100644 --- a/spec/integration/singleton_settings_endpoint_spec.rb +++ b/spec/integration/singleton_settings_endpoint_spec.rb @@ -18,14 +18,14 @@ describe Travis::Api::App::SettingsEndpoint do serializer_class = Class.new(Travis::Api::Serializer) do attributes :name end - Travis::Api::V2::Http.const_set(:Item, serializer_class) + Travis::Api::Serialize::V2::Http.const_set(:Item, serializer_class) add_settings_endpoint :item, singleton: true end after do Travis::Api::App::Endpoint.send :remove_const, :Item - Travis::Api::V2::Http.send :remove_const, :Item + Travis::Api::Serialize::V2::Http.send :remove_const, :Item end describe 'with authenticated user' do diff --git a/spec/integration/version_spec.rb b/spec/integration/version_spec.rb index 818a0dbd..fcab65e9 100644 --- a/spec/integration/version_spec.rb +++ b/spec/integration/version_spec.rb @@ -10,7 +10,7 @@ describe 'App' do end it 'uses version from current accept header' do - Travis::Api.expects(:builder).with { |r, options| options[:version] == 'v1' } + Travis::Api::Serialize.expects(:builder).with { |r, options| options[:version] == 'v1' } Travis::Api::App::Responders::Json.any_instance.stubs(:apply?). returns(false).then.returns(true) @@ -20,7 +20,7 @@ describe 'App' do end it 'uses v1 by default' do - Travis::Api.expects(:builder).with { |r, options| options[:version] == 'v1' } + Travis::Api::Serialize.expects(:builder).with { |r, options| options[:version] == 'v1' } get '/foo', {}, 'HTTP_ACCEPT' => 'application/json' end end diff --git a/spec/support/matchers.rb b/spec/support/matchers.rb index 883a49f2..d43e2cb3 100644 --- a/spec/support/matchers.rb +++ b/spec/support/matchers.rb @@ -4,7 +4,7 @@ RSpec::Matchers.define :deliver_json_for do |resource, options = {}| match do |response| if response.status == 200 actual = parse(response.body) - expected = resource.is_a?(Hash) ? resource : Travis::Api.data(resource, options) + expected = resource.is_a?(Hash) ? resource : Travis::Api::Serialize.data(resource, options) failure_message_for_should do "expected\n\n#{actual}\n\nto equal\n\n#{expected}" diff --git a/spec/unit/api/v2/http/accounts_spec.rb b/spec/unit/serialize/v2/http/accounts_spec.rb similarity index 86% rename from spec/unit/api/v2/http/accounts_spec.rb rename to spec/unit/serialize/v2/http/accounts_spec.rb index d444c2fa..acd17699 100644 --- a/spec/unit/api/v2/http/accounts_spec.rb +++ b/spec/unit/serialize/v2/http/accounts_spec.rb @@ -1,13 +1,13 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Accounts do +describe Travis::Api::Serialize::V2::Http::Accounts do include Travis::Testing::Stubs, Support::Formats let(:user) { { 'id' => 1, 'type' => 'User', 'login' => 'sven', 'name' => 'Sven', 'repos_count' => 2 } } let(:org) { { 'id' => 1, 'type' => 'Organization', 'login' => 'travis', 'name' => 'Travis', 'repos_count' => 1, 'avatar_url' => 'https://example.org/avatar.png' } } let(:accounts) { [Account.new(user), Account.new(org)] } - let(:data) { Travis::Api::V2::Http::Accounts.new(accounts).data } + let(:data) { described_class.new(accounts).data } it 'accounts' do data[:accounts].should == [ diff --git a/spec/unit/api/v2/http/annotations_spec.rb b/spec/unit/serialize/v2/http/annotations_spec.rb similarity index 87% rename from spec/unit/api/v2/http/annotations_spec.rb rename to spec/unit/serialize/v2/http/annotations_spec.rb index 5a973333..995a2b94 100644 --- a/spec/unit/api/v2/http/annotations_spec.rb +++ b/spec/unit/serialize/v2/http/annotations_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Annotations do +describe Travis::Api::Serialize::V2::Http::Annotations do include Travis::Testing::Stubs, Support::Formats let(:data) { described_class.new([annotation]).data } diff --git a/spec/unit/api/v2/http/branch_spec.rb b/spec/unit/serialize/v2/http/branch_spec.rb similarity index 91% rename from spec/unit/api/v2/http/branch_spec.rb rename to spec/unit/serialize/v2/http/branch_spec.rb index ada13b3e..68c37b98 100644 --- a/spec/unit/api/v2/http/branch_spec.rb +++ b/spec/unit/serialize/v2/http/branch_spec.rb @@ -1,9 +1,9 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Branch do +describe Travis::Api::Serialize::V2::Http::Branch do include Travis::Testing::Stubs, Support::Formats - let(:data) { Travis::Api::V2::Http::Branch.new(branch).data } + let(:data) { described_class.new(branch).data } let(:branch) { build } specify 'branch' do diff --git a/spec/unit/api/v2/http/branches_spec.rb b/spec/unit/serialize/v2/http/branches_spec.rb similarity index 91% rename from spec/unit/api/v2/http/branches_spec.rb rename to spec/unit/serialize/v2/http/branches_spec.rb index c0cec4e6..0e560f64 100644 --- a/spec/unit/api/v2/http/branches_spec.rb +++ b/spec/unit/serialize/v2/http/branches_spec.rb @@ -1,9 +1,9 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Branches do +describe Travis::Api::Serialize::V2::Http::Branches do include Travis::Testing::Stubs, Support::Formats - let(:data) { Travis::Api::V2::Http::Branches.new(branches).data } + let(:data) { described_class.new(branches).data } let(:branches) { [build] } it 'branches' do diff --git a/spec/unit/api/v2/http/broadcasts_spec.rb b/spec/unit/serialize/v2/http/broadcasts_spec.rb similarity index 65% rename from spec/unit/api/v2/http/broadcasts_spec.rb rename to spec/unit/serialize/v2/http/broadcasts_spec.rb index e7a5a45c..85ed3fe9 100644 --- a/spec/unit/api/v2/http/broadcasts_spec.rb +++ b/spec/unit/serialize/v2/http/broadcasts_spec.rb @@ -1,10 +1,10 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Broadcasts do +describe Travis::Api::Serialize::V2::Http::Broadcasts do include Support::Formats let(:broadcast) { stub(:id => 1, :message => 'yo hey!') } - let(:data) { Travis::Api::V2::Http::Broadcasts.new([broadcast]).data } + let(:data) { described_class.new([broadcast]).data } it 'broadcasts' do data['broadcasts'].first.should == { diff --git a/spec/unit/api/v2/http/build_spec.rb b/spec/unit/serialize/v2/http/build_spec.rb similarity index 87% rename from spec/unit/api/v2/http/build_spec.rb rename to spec/unit/serialize/v2/http/build_spec.rb index 2997a6ce..d9558f8b 100644 --- a/spec/unit/api/v2/http/build_spec.rb +++ b/spec/unit/serialize/v2/http/build_spec.rb @@ -1,9 +1,9 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Build do +describe Travis::Api::Serialize::V2::Http::Build do include Travis::Testing::Stubs, Support::Formats - let(:data) { Travis::Api::V2::Http::Build.new(build).data } + let(:data) { described_class.new(build).data } it 'build' do data['build'].should == { @@ -46,7 +46,7 @@ describe Travis::Api::V2::Http::Build do pull_request_title: 'A pull request', pull_request_number: 44 end - let(:data) { Travis::Api::V2::Http::Build.new(build).data } + let(:data) { described_class.new(build).data } it 'returns pull request data' do data['build']['pull_request'].should == true @@ -75,10 +75,10 @@ describe Travis::Api::V2::Http::Build do end end -describe 'Travis::Api::V2::Http::Build using Travis::Services::Builds::FindOne' do +describe Travis::Api::Serialize::V2::Http::Build, 'using Travis::Services::Builds::FindOne' do let!(:record) { Factory(:build) } let(:build) { Travis.run_service(:find_build, nil, :id => record.id) } - let(:data) { Travis::Api::V2::Http::Build.new(build).data } + let(:data) { described_class.new(build).data } it 'queries' do lambda { data }.should issue_queries(8) diff --git a/spec/unit/api/v2/http/builds_spec.rb b/spec/unit/serialize/v2/http/builds_spec.rb similarity index 87% rename from spec/unit/api/v2/http/builds_spec.rb rename to spec/unit/serialize/v2/http/builds_spec.rb index f59ac427..3a587257 100644 --- a/spec/unit/api/v2/http/builds_spec.rb +++ b/spec/unit/serialize/v2/http/builds_spec.rb @@ -1,9 +1,9 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Builds do +describe Travis::Api::Serialize::V2::Http::Builds do include Travis::Testing::Stubs, Support::Formats - let(:data) { Travis::Api::V2::Http::Builds.new([build]).data } + let(:data) { described_class.new([build]).data } it 'builds' do data['builds'].first.should == { @@ -43,7 +43,7 @@ describe Travis::Api::V2::Http::Builds do it 'uses uses cached_matrix_ids if the column exists in DB' do build = stub_build build.expects(:cached_matrix_ids).returns([1, 2, 3]) - data = Travis::Api::V2::Http::Builds.new([build]).data + data = described_class.new([build]).data data['builds'].first['job_ids'].should == [1, 2, 3] end @@ -61,10 +61,10 @@ describe Travis::Api::V2::Http::Builds do end end -describe 'Travis::Api::V2::Http::Builds using Travis::Services::Builds::FindAll' do +describe Travis::Api::Serialize::V2::Http::Builds, 'using Travis::Services::Builds::FindAll' do let!(:repo) { Factory(:repository) } let(:builds) { Travis.run_service(:find_builds, nil, :event_type => 'push', :repository_id => repo.id) } - let(:data) { Travis::Api::V2::Http::Builds.new(builds).data } + let(:data) { described_class.new(builds).data } before :each do 3.times { Factory(:build, :repository => repo) } diff --git a/spec/unit/api/v2/http/caches_spec.rb b/spec/unit/serialize/v2/http/caches_spec.rb similarity index 74% rename from spec/unit/api/v2/http/caches_spec.rb rename to spec/unit/serialize/v2/http/caches_spec.rb index 9a310e32..0fd41c89 100644 --- a/spec/unit/api/v2/http/caches_spec.rb +++ b/spec/unit/serialize/v2/http/caches_spec.rb @@ -1,8 +1,8 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Branch do +describe Travis::Api::Serialize::V2::Http::Caches do include Travis::Testing::Stubs, Support::Formats - let(:data) { Travis::Api::V2::Http::Caches.new([cache]).data } + let(:data) { described_class.new([cache]).data } specify 'caches' do data['caches'].should be == [{ @@ -13,4 +13,4 @@ describe Travis::Api::V2::Http::Branch do "last_modified" => "1970-01-01T00:00:00Z" }] end -end \ No newline at end of file +end diff --git a/spec/unit/api/v2/http/env_var_spec.rb b/spec/unit/serialize/v2/http/env_var_spec.rb similarity index 83% rename from spec/unit/api/v2/http/env_var_spec.rb rename to spec/unit/serialize/v2/http/env_var_spec.rb index 8f9e703e..f5510f36 100644 --- a/spec/unit/api/v2/http/env_var_spec.rb +++ b/spec/unit/serialize/v2/http/env_var_spec.rb @@ -1,8 +1,8 @@ require 'spec_helper' -describe Travis::Api::V2::Http::EnvVar do +describe Travis::Api::Serialize::V2::Http::EnvVar do let(:env_var) { Repository::Settings::EnvVar.new(name: 'FOO', value: 'bar', public: true) } - let(:data) { Travis::Api::V2::Http::EnvVar.new(env_var) } + let(:data) { described_class.new(env_var) } it 'returns value' do data.as_json['env_var'][:value].should == 'bar' diff --git a/spec/unit/api/v2/http/hooks_spec.rb b/spec/unit/serialize/v2/http/hooks_spec.rb similarity index 82% rename from spec/unit/api/v2/http/hooks_spec.rb rename to spec/unit/serialize/v2/http/hooks_spec.rb index cf51580c..f084e849 100644 --- a/spec/unit/api/v2/http/hooks_spec.rb +++ b/spec/unit/serialize/v2/http/hooks_spec.rb @@ -1,12 +1,12 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Hooks do +describe Travis::Api::Serialize::V2::Http::Hooks do include Travis::Testing::Stubs let(:data) { r = repository r.stubs(:admin?).returns(true) - Travis::Api::V2::Http::Hooks.new([r]).data + described_class.new([r]).data } it 'hooks' do diff --git a/spec/unit/api/v2/http/job_spec.rb b/spec/unit/serialize/v2/http/job_spec.rb similarity index 89% rename from spec/unit/api/v2/http/job_spec.rb rename to spec/unit/serialize/v2/http/job_spec.rb index ca10373b..d8c0fcf9 100644 --- a/spec/unit/api/v2/http/job_spec.rb +++ b/spec/unit/serialize/v2/http/job_spec.rb @@ -1,9 +1,9 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Job do +describe Travis::Api::Serialize::V2::Http::Job do include Travis::Testing::Stubs, Support::Formats - let(:data) { Travis::Api::V2::Http::Job.new(test).data } + let(:data) { described_class.new(test).data } it 'job' do data['job'].should == { @@ -63,10 +63,10 @@ describe Travis::Api::V2::Http::Job do end end -describe 'Travis::Api::V2::Http::Job using Travis::Services::Jobs::FindOne' do +describe Travis::Api::Serialize::V2::Http::Job, 'using Travis::Services::Jobs::FindOne' do let!(:record) { Factory(:test) } let(:job) { Travis.run_service(:find_job, nil, :id => record.id) } - let(:data) { Travis::Api::V2::Http::Job.new(job).data } + let(:data) { described_class.new(job).data } it 'queries' do lambda { data }.should issue_queries(5) diff --git a/spec/unit/api/v2/http/jobs_spec.rb b/spec/unit/serialize/v2/http/jobs_spec.rb similarity index 84% rename from spec/unit/api/v2/http/jobs_spec.rb rename to spec/unit/serialize/v2/http/jobs_spec.rb index ba3e0d3f..ef9a11d8 100644 --- a/spec/unit/api/v2/http/jobs_spec.rb +++ b/spec/unit/serialize/v2/http/jobs_spec.rb @@ -1,9 +1,9 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Jobs do +describe Travis::Api::Serialize::V2::Http::Jobs do include Travis::Testing::Stubs, Support::Formats - let(:data) { Travis::Api::V2::Http::Jobs.new([test]).data } + let(:data) { described_class.new([test]).data } it 'jobs' do data['jobs'].first.should == { @@ -40,9 +40,9 @@ describe Travis::Api::V2::Http::Jobs do end end -describe 'Travis::Api::V2::Http::Jobs using Travis::Services::Jobs::FindAll' do +describe Travis::Api::Serialize::V2::Http::Jobs, 'using Travis::Services::Jobs::FindAll' do let(:jobs) { Travis.run_service(:find_jobs, nil) } - let(:data) { Travis::Api::V2::Http::Jobs.new(jobs).data } + let(:data) { described_class.new(jobs).data } before :each do 3.times { Factory(:test) } diff --git a/spec/unit/api/v2/http/log_spec.rb b/spec/unit/serialize/v2/http/log_spec.rb similarity index 96% rename from spec/unit/api/v2/http/log_spec.rb rename to spec/unit/serialize/v2/http/log_spec.rb index 6a9c3064..5ea45cf1 100644 --- a/spec/unit/api/v2/http/log_spec.rb +++ b/spec/unit/serialize/v2/http/log_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Log do +describe Travis::Api::Serialize::V2::Http::Log do include Travis::Testing::Stubs let(:log) { diff --git a/spec/unit/api/v2/http/permissions_spec.rb b/spec/unit/serialize/v2/http/permissions_spec.rb similarity index 83% rename from spec/unit/api/v2/http/permissions_spec.rb rename to spec/unit/serialize/v2/http/permissions_spec.rb index 084f6a66..0eb7ba7f 100644 --- a/spec/unit/api/v2/http/permissions_spec.rb +++ b/spec/unit/serialize/v2/http/permissions_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Permissions do +describe Travis::Api::Serialize::V2::Http::Permissions do include Travis::Testing::Stubs let(:permissions) do @@ -11,7 +11,7 @@ describe Travis::Api::V2::Http::Permissions do ] end - let(:data) { Travis::Api::V2::Http::Permissions.new(permissions).data } + let(:data) { described_class.new(permissions).data } it 'permissions' do data['permissions'].should == [1, 2, 3] diff --git a/spec/unit/api/v2/http/repositories_spec.rb b/spec/unit/serialize/v2/http/repositories_spec.rb similarity index 75% rename from spec/unit/api/v2/http/repositories_spec.rb rename to spec/unit/serialize/v2/http/repositories_spec.rb index 34e4c041..35f212fb 100644 --- a/spec/unit/api/v2/http/repositories_spec.rb +++ b/spec/unit/serialize/v2/http/repositories_spec.rb @@ -1,9 +1,9 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Repositories do +describe Travis::Api::Serialize::V2::Http::Repositories do include Travis::Testing::Stubs, Support::Formats - let(:data) { Travis::Api::V2::Http::Repositories.new([repository]).data } + let(:data) { described_class.new([repository]).data } it 'repositories' do data['repos'].first.should == { @@ -23,9 +23,9 @@ describe Travis::Api::V2::Http::Repositories do end end -describe 'Travis::Api::V2::Http::Repositories using Travis::Services::FindRepos' do +describe Travis::Api::Serialize::V2::Http::Repositories, 'using Travis::Services::FindRepos' do let(:repos) { Travis.run_service(:find_repos) } - let(:data) { Travis::Api::V2::Http::Repositories.new(repos).data } + let(:data) { described_class.new(repos).data } before :each do 3.times { |i| Factory(:repository, :name => i) } diff --git a/spec/unit/api/v2/http/repository_spec.rb b/spec/unit/serialize/v2/http/repository_spec.rb similarity index 75% rename from spec/unit/api/v2/http/repository_spec.rb rename to spec/unit/serialize/v2/http/repository_spec.rb index 33f655fc..7597daca 100644 --- a/spec/unit/api/v2/http/repository_spec.rb +++ b/spec/unit/serialize/v2/http/repository_spec.rb @@ -1,10 +1,10 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Repository do +describe Travis::Api::Serialize::V2::Http::Repository do include Travis::Testing::Stubs include Support::Formats - let(:data) { Travis::Api::V2::Http::Repository.new(repository).data } + let(:data) { described_class.new(repository).data } it 'repository' do data['repo'].should == { @@ -24,10 +24,10 @@ describe Travis::Api::V2::Http::Repository do end end -describe 'Travis::Api::V2::Http::Repository using Travis::Services::FindRepo' do +describe Travis::Api::Serialize::V2::Http::Repository, 'using Travis::Services::FindRepo' do let!(:record) { Factory(:repository) } let(:repo) { Travis.run_service(:find_repo, :id => record.id) } - let(:data) { Travis::Api::V2::Http::Repository.new(repo).data } + let(:data) { described_class.new(repo).data } it 'queries' do lambda { data }.should issue_queries(1) diff --git a/spec/unit/api/v2/http/request_spec.rb b/spec/unit/serialize/v2/http/request_spec.rb similarity index 93% rename from spec/unit/api/v2/http/request_spec.rb rename to spec/unit/serialize/v2/http/request_spec.rb index c7eb2edf..5d604dc7 100644 --- a/spec/unit/api/v2/http/request_spec.rb +++ b/spec/unit/serialize/v2/http/request_spec.rb @@ -1,13 +1,13 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Request do +describe Travis::Api::Serialize::V2::Http::Request do include Travis::Testing::Stubs, Support::Formats let(:data) { request = stub_request request.stubs(:builds).returns([build]) request.stubs(:tag_name).returns(nil) - Travis::Api::V2::Http::Request.new(request).data + described_class.new(request).data } it 'returns request data' do diff --git a/spec/unit/api/v2/http/requests_spec.rb b/spec/unit/serialize/v2/http/requests_spec.rb similarity index 91% rename from spec/unit/api/v2/http/requests_spec.rb rename to spec/unit/serialize/v2/http/requests_spec.rb index 2f72bf63..130eedf9 100644 --- a/spec/unit/api/v2/http/requests_spec.rb +++ b/spec/unit/serialize/v2/http/requests_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Requests do +describe Travis::Api::Serialize::V2::Http::Requests do include Travis::Testing::Stubs, Support::Formats before do @@ -11,7 +11,7 @@ describe Travis::Api::V2::Http::Requests do request = stub_request request.stubs(:builds).returns([build]) request.stubs(:tag_name).returns(nil) - Travis::Api::V2::Http::Requests.new([request]).data + described_class.new([request]).data } it 'returns requests data' do @@ -59,7 +59,7 @@ describe Travis::Api::V2::Http::Requests do request = stub_request request.stubs(:commit).returns(nil) request.stubs(:builds).returns([build]) - Travis::Api::V2::Http::Requests.new([request]).data + described_class.new([request]).data } it "doesn't fail if there is no commit data for a given request" do diff --git a/spec/unit/api/v2/http/ssl_key_spec.rb b/spec/unit/serialize/v2/http/ssl_key_spec.rb similarity index 76% rename from spec/unit/api/v2/http/ssl_key_spec.rb rename to spec/unit/serialize/v2/http/ssl_key_spec.rb index 5be3da1c..c2c3918e 100644 --- a/spec/unit/api/v2/http/ssl_key_spec.rb +++ b/spec/unit/serialize/v2/http/ssl_key_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Travis::Api::V2::Http::Repository do +describe Travis::Api::Serialize::V2::Http::SslKey do include Travis::Testing::Stubs include Support::Formats @@ -9,7 +9,7 @@ describe Travis::Api::V2::Http::Repository do key.stubs(:private_key).returns(TEST_PRIVATE_KEY) key } - let(:data) { Travis::Api::V2::Http::SslKey.new(key).data } + let(:data) { described_class.new(key).data } it 'returns data' do data['key'].should == '-----BEGIN PUBLIC KEY-----' diff --git a/spec/unit/api/v2/http/user_spec.rb b/spec/unit/serialize/v2/http/user_spec.rb similarity index 86% rename from spec/unit/api/v2/http/user_spec.rb rename to spec/unit/serialize/v2/http/user_spec.rb index 71232484..8bb5d4ae 100644 --- a/spec/unit/api/v2/http/user_spec.rb +++ b/spec/unit/serialize/v2/http/user_spec.rb @@ -1,10 +1,10 @@ require 'spec_helper' -describe Travis::Api::V2::Http::User do +describe Travis::Api::Serialize::V2::Http::User do include Travis::Testing::Stubs, Support::Formats let(:user) { stub_user(repository_ids: [1, 4, 8]) } - let(:data) { Travis::Api::V2::Http::User.new(user).data } + let(:data) { described_class.new(user).data } it 'user' do data['user'].should == { diff --git a/vendor/travis-core/lib/travis.rb b/vendor/travis-core/lib/travis.rb index 8b8c8550..af73f92a 100644 --- a/vendor/travis-core/lib/travis.rb +++ b/vendor/travis-core/lib/travis.rb @@ -42,7 +42,7 @@ module Travis require 'travis/task' require 'travis/event' require 'travis/addons' - require 'travis/api' + require 'travis/api/serialize' require 'travis/config/defaults' require 'travis/features' require 'travis/github' diff --git a/vendor/travis-core/lib/travis/addons/flowdock/event_handler.rb b/vendor/travis-core/lib/travis/addons/flowdock/event_handler.rb index 08167d63..64adb5bc 100644 --- a/vendor/travis-core/lib/travis/addons/flowdock/event_handler.rb +++ b/vendor/travis-core/lib/travis/addons/flowdock/event_handler.rb @@ -16,7 +16,7 @@ module Travis def initialize(*) super - @payload = Api.data(object, for: 'event', version: 'v0', params: data) + @payload = Serializer.data(object, for: 'event', version: 'v0', params: data) end def handle? diff --git a/vendor/travis-core/lib/travis/addons/pusher/event_handler.rb b/vendor/travis-core/lib/travis/addons/pusher/event_handler.rb index 27c3d620..ec11da32 100644 --- a/vendor/travis-core/lib/travis/addons/pusher/event_handler.rb +++ b/vendor/travis-core/lib/travis/addons/pusher/event_handler.rb @@ -16,7 +16,7 @@ module Travis def initialize(*) super - @pusher_payload = Api.data(object, :for => 'pusher', :type => type, :params => data) if handle? + @pusher_payload = Serializer.data(object, :for => 'pusher', :type => type, :params => data) if handle? end def handle? diff --git a/vendor/travis-core/lib/travis/addons/webhook/event_handler.rb b/vendor/travis-core/lib/travis/addons/webhook/event_handler.rb index 129757d0..94f2d947 100644 --- a/vendor/travis-core/lib/travis/addons/webhook/event_handler.rb +++ b/vendor/travis-core/lib/travis/addons/webhook/event_handler.rb @@ -25,7 +25,7 @@ module Travis end def webhook_payload - Api.data(object, :for => 'webhook', :type => 'build/finished', :version => 'v1') + Serializer.data(object, :for => 'webhook', :type => 'build/finished', :version => 'v1') end def targets diff --git a/vendor/travis-core/lib/travis/api.rb b/vendor/travis-core/lib/travis/api.rb deleted file mode 100644 index b3991d7b..00000000 --- a/vendor/travis-core/lib/travis/api.rb +++ /dev/null @@ -1,67 +0,0 @@ -module Travis - module Api - require 'travis/api/formats' - require 'travis/api/v0' - require 'travis/api/v1' - require 'travis/api/v2' - - DEFAULT_VERSION = 'v2' - - class << self - def data(resource, options = {}) - new(resource, options).data - end - - def builder(resource, options = {}) - target = (options[:for] || 'http').to_s.camelize - version = (options[:version] || default_version(options)).to_s.camelize - type = (options[:type] || type_for(resource)).to_s.camelize.split('::') - ([version, target] + type).inject(Travis::Api) do |const, name| - begin - if const && const.const_defined?(name.to_s.camelize, false) - const.const_get(name, false) - else - nil - end - rescue NameError - nil - end - end - end - - def new(resource, options = {}) - builder = builder(resource, options) || raise(ArgumentError, "cannot serialize #{resource.inspect}, options: #{options.inspect}") - builder.new(resource, options[:params] || {}) - end - - private - - def type_for(resource) - if arel_relation?(resource) - type = resource.klass.name.pluralize - else - type = resource.class - type = type.base_class if active_record?(type) - type = type.name - end - type.split('::').last - end - - def arel_relation?(object) - object.respond_to?(:klass) - end - - def active_record?(object) - object.respond_to?(:base_class) - end - - def default_version(options) - if options[:for].to_s.downcase == "pusher" - "v0" - else - DEFAULT_VERSION - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/README.markdown b/vendor/travis-core/lib/travis/api/README.markdown deleted file mode 100644 index 0ca565b1..00000000 --- a/vendor/travis-core/lib/travis/api/README.markdown +++ /dev/null @@ -1,10 +0,0 @@ -This directory contains serializers for events and models. - -- `v0/event`: Payloads used by [`Travis::Event::Handler`](../event/handler.rb). These are the payloads that the [addons](../addons) will get. -- `v0/pusher`: Payloads used to send events to the web UI using Pusher. -- `v0/worker`: Payloads sent to [travis-worker](https://github.com/travis-ci/travis-worker). - -- `v1/http`: Payloads for the v1 [API](https://github.com/travis-ci/travis-api). -- `v1/webhook`: Payloads for the webhook notifications. - -- `v2/http`: Payloads for the v2 [API](https://github.com/travis-ci/travis-api). \ No newline at end of file diff --git a/vendor/travis-core/lib/travis/api/formats.rb b/vendor/travis-core/lib/travis/api/formats.rb deleted file mode 100644 index b218bda5..00000000 --- a/vendor/travis-core/lib/travis/api/formats.rb +++ /dev/null @@ -1,9 +0,0 @@ -module Travis - module Api - module Formats - def format_date(date) - date && date.strftime('%Y-%m-%dT%H:%M:%SZ') - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/serialize.rb b/vendor/travis-core/lib/travis/api/serialize.rb new file mode 100644 index 00000000..f433046f --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize.rb @@ -0,0 +1,68 @@ +require 'travis/api/serialize/formats' +require 'travis/api/serialize/v0' +require 'travis/api/serialize/v1' + +module Travis + module Api + module Serialize + DEFAULT_VERSION = 'v2' + + class << self + def data(resource, options = {}) + new(resource, options).data + end + + def builder(resource, options = {}) + target = (options[:for] || 'http').to_s.camelize + version = (options[:version] || default_version(options)).to_s.camelize + type = (options[:type] || type_for(resource)).to_s.camelize.split('::') + ([version, target] + type).inject(self) do |const, name| + begin + if const && const.const_defined?(name.to_s.camelize, false) + const.const_get(name, false) + else + nil + end + rescue NameError + nil + end + end + end + + def new(resource, options = {}) + builder = builder(resource, options) || raise(ArgumentError, "cannot serialize #{resource.inspect}, options: #{options.inspect}") + builder.new(resource, options[:params] || {}) + end + + private + + def type_for(resource) + if arel_relation?(resource) + type = resource.klass.name.pluralize + else + type = resource.class + type = type.base_class if active_record?(type) + type = type.name + end + type.split('::').last + end + + def arel_relation?(object) + object.respond_to?(:klass) + end + + def active_record?(object) + object.respond_to?(:base_class) + end + + def default_version(options) + if options[:for].to_s.downcase == "pusher" + "v0" + else + DEFAULT_VERSION + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/formats.rb b/vendor/travis-core/lib/travis/api/serialize/formats.rb new file mode 100644 index 00000000..feea3e36 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/formats.rb @@ -0,0 +1,11 @@ +module Travis + module Api + module Serialize + module Formats + def format_date(date) + date && date.strftime('%Y-%m-%dT%H:%M:%SZ') + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0.rb b/vendor/travis-core/lib/travis/api/serialize/v0.rb new file mode 100644 index 00000000..a4ba9ef2 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0.rb @@ -0,0 +1,6 @@ +# V0 is an internal api that we can change at any time + +require 'travis/api/serialize/v0/event' +require 'travis/api/serialize/v0/notification' +require 'travis/api/serialize/v0/pusher' +require 'travis/api/serialize/v0/worker' diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/event.rb b/vendor/travis-core/lib/travis/api/serialize/v0/event.rb new file mode 100644 index 00000000..12fd153d --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/event.rb @@ -0,0 +1,2 @@ +require 'travis/api/serialize/v0/event/build' +require 'travis/api/serialize/v0/event/job' diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/event/build.rb b/vendor/travis-core/lib/travis/api/serialize/v0/event/build.rb new file mode 100644 index 00000000..1d6066c1 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/event/build.rb @@ -0,0 +1,96 @@ +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 diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/event/job.rb b/vendor/travis-core/lib/travis/api/serialize/v0/event/job.rb new file mode 100644 index 00000000..d7fd3961 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/event/job.rb @@ -0,0 +1,37 @@ +module Travis + module Api + module Serialize + module V0 + module Event + class Job + include Formats + + attr_reader :job + + def initialize(job, options = {}) + @job = job + # @options = options + end + + def data(extra = {}) + { + 'job' => job_data, + } + end + + private + + def job_data + { + 'queue' => job.queue, + 'created_at' => job.created_at, + 'started_at' => job.started_at, + 'finished_at' => job.finished_at, + } + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/notification.rb b/vendor/travis-core/lib/travis/api/serialize/v0/notification.rb new file mode 100644 index 00000000..6ff461c4 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/notification.rb @@ -0,0 +1,3 @@ +require 'travis/api/serialize/v0/notification/build' +require 'travis/api/serialize/v0/notification/repository' +require 'travis/api/serialize/v0/notification/user' diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/notification/build.rb b/vendor/travis-core/lib/travis/api/serialize/v0/notification/build.rb new file mode 100644 index 00000000..f2786e8f --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/notification/build.rb @@ -0,0 +1,29 @@ +module Travis + module Api + module Serialize + module V0 + module Notification + class Build + attr_reader :build + + def initialize(build, options = {}) + @build = build + end + + def data + { + 'build' => build_data + } + end + + def build_data + { + 'id' => build.id + } + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/notification/repository.rb b/vendor/travis-core/lib/travis/api/serialize/v0/notification/repository.rb new file mode 100644 index 00000000..f4ce68d8 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/notification/repository.rb @@ -0,0 +1,30 @@ +module Travis + module Api + module Serialize + module V0 + module Notification + class Repository + attr_reader :repository + + def initialize(repository, options = {}) + @repository = repository + end + + def data + { + 'repository' => repository_data + } + end + + def repository_data + { + 'id' => repository.id, + 'slug' => repository.slug + } + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/notification/user.rb b/vendor/travis-core/lib/travis/api/serialize/v0/notification/user.rb new file mode 100644 index 00000000..e9de9482 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/notification/user.rb @@ -0,0 +1,30 @@ +module Travis + module Api + module Serialize + module V0 + module Notification + class User + attr_reader :user + + def initialize(user, options = {}) + @user = user + end + + def data + { + 'user' => user_data + } + end + + def user_data + { + 'id' => user.id, + 'login' => user.login + } + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher.rb new file mode 100644 index 00000000..75bd107b --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher.rb @@ -0,0 +1,3 @@ +require 'travis/api/serialize/v0/pusher/annotation' +require 'travis/api/serialize/v0/pusher/build' +require 'travis/api/serialize/v0/pusher/job' diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/annotation.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/annotation.rb new file mode 100644 index 00000000..df7d1364 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/annotation.rb @@ -0,0 +1,35 @@ +require 'travis/api/serialize/v0/pusher/annotation/created' +require 'travis/api/serialize/v0/pusher/annotation/updated' + +module Travis + module Api + module Serialize + module V0 + module Pusher + class Annotation + include Formats + + attr_reader :annotation + + def initialize(annotation, options = {}) + @annotation = annotation + end + + def data + { + "annotation" => { + "id" => annotation.id, + "job_id" => annotation.job_id, + "description" => annotation.description, + "url" => annotation.url, + "status" => annotation.status, + "provider_name" => annotation.annotation_provider.name, + } + } + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/annotation/created.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/annotation/created.rb new file mode 100644 index 00000000..88dfd21d --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/annotation/created.rb @@ -0,0 +1,14 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Annotation + class Created < Annotation + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/annotation/updated.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/annotation/updated.rb new file mode 100644 index 00000000..2b17c91a --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/annotation/updated.rb @@ -0,0 +1,14 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Annotation + class Updated < Annotation + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build.rb new file mode 100644 index 00000000..eec94b38 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build.rb @@ -0,0 +1,112 @@ +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 diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/canceled.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/canceled.rb new file mode 100644 index 00000000..79185406 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/canceled.rb @@ -0,0 +1,14 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Build + class Canceled < Build + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/created.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/created.rb new file mode 100644 index 00000000..263b44d7 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/created.rb @@ -0,0 +1,14 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Build + class Created < Build + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/finished.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/finished.rb new file mode 100644 index 00000000..c9cc7c46 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/finished.rb @@ -0,0 +1,14 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Build + class Finished < Build + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/received.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/received.rb new file mode 100644 index 00000000..f8b5187c --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/received.rb @@ -0,0 +1,14 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Build + class Received < Build + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/received/job.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/received/job.rb new file mode 100644 index 00000000..80b0a1a3 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/received/job.rb @@ -0,0 +1,49 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Build + class Received < Build + class Job + include Formats, V1::Helpers::Legacy + + attr_reader :job, :commit + + def initialize(job) + @job = job + @commit = job.commit + end + + def data + { + 'id' => job.id, + 'repository_id' => job.repository_id, + 'repository_private' => repository.private, + 'parent_id' => job.source_id, + 'number' => job.number, + 'state' => job.state.to_s, + 'result' => legacy_job_result(job), + 'config' => job.obfuscated_config, + 'commit' => commit.commit, + 'branch' => commit.branch, + 'message' => commit.message, + 'compare_url' => commit.compare_url, + 'started_at' => format_date(job.started_at), + 'finished_at' => format_date(job.finished_at), + '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, + 'allow_failure' => job.allow_failure + } + end + end + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/started.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/started.rb new file mode 100644 index 00000000..8cfc5093 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/started.rb @@ -0,0 +1,14 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Build + class Started < Build + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/started/job.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/started/job.rb new file mode 100644 index 00000000..e23e9151 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/build/started/job.rb @@ -0,0 +1,49 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Build + class Started < Build + class Job + include Formats, V1::Helpers::Legacy + + attr_reader :job, :commit + + def initialize(job) + @job = job + @commit = job.commit + end + + def data + { + 'id' => job.id, + 'repository_id' => job.repository_id, + 'repository_private' => repository.private, + 'parent_id' => job.source_id, + 'number' => job.number, + 'state' => job.state.to_s, + 'result' => legacy_job_result(job), + 'config' => job.obfuscated_config, + 'commit' => commit.commit, + 'branch' => commit.branch, + 'message' => commit.message, + 'compare_url' => commit.compare_url, + 'started_at' => format_date(job.started_at), + 'finished_at' => format_date(job.finished_at), + '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, + 'allow_failure' => job.allow_failure + } + end + end + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job.rb new file mode 100644 index 00000000..f615a83d --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job.rb @@ -0,0 +1,69 @@ +require 'travis/api/serialize/v0/pusher/job/canceled' +require 'travis/api/serialize/v0/pusher/job/created' +require 'travis/api/serialize/v0/pusher/job/log' +require 'travis/api/serialize/v0/pusher/job/received' +require 'travis/api/serialize/v0/pusher/job/started' +require 'travis/api/serialize/v0/pusher/job/finished' + +module Travis + module Api + module Serialize + module V0 + module Pusher + class Job + include Formats + + attr_reader :job, :options + + def initialize(job, options = {}) + @job = job + @options = options + end + + def data + job_data(job).merge( + 'commit' => commit_data(job.commit) + ) + end + + private + + def job_data(job) + { + 'id' => job.id, + 'repository_id' => job.repository_id, + 'repository_slug' => job.repository.slug, + 'repository_private' => job.repository.private, + 'build_id' => job.source_id, + 'commit_id' => job.commit_id, + 'log_id' => job.log_id, + 'number' => job.number, + 'state' => job.state.to_s, + 'started_at' => format_date(job.started_at), + 'finished_at' => format_date(job.finished_at), + 'queue' => job.queue, + 'allow_failure' => job.allow_failure, + 'annotation_ids' => job.annotation_ids + } + 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 + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/canceled.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/canceled.rb new file mode 100644 index 00000000..35b7cd57 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/canceled.rb @@ -0,0 +1,14 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Job + class Canceled < Job + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/created.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/created.rb new file mode 100644 index 00000000..041e8ca6 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/created.rb @@ -0,0 +1,14 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Job + class Created < Job + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/finished.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/finished.rb new file mode 100644 index 00000000..3a758b78 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/finished.rb @@ -0,0 +1,14 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Job + class Finished < Job + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/log.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/log.rb new file mode 100644 index 00000000..632d7ab6 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/log.rb @@ -0,0 +1,32 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Job + class Log + attr_reader :job, :options + + def initialize(job, options = {}) + @job = job + @options = options + end + + def data + { + 'id' => job.id, + 'build_id' => job.source_id, + 'repository_id' => job.repository_id, + 'repository_private' => repository.private, + '_log' => options[:_log], + 'number' => options[:number], + 'final' => options[:final] + } + end + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/received.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/received.rb new file mode 100644 index 00000000..dfc21e69 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/received.rb @@ -0,0 +1,14 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Job + class Received < Job + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/started.rb b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/started.rb new file mode 100644 index 00000000..f777d85c --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/pusher/job/started.rb @@ -0,0 +1,14 @@ +module Travis + module Api + module Serialize + module V0 + module Pusher + class Job + class Started < Job + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/worker.rb b/vendor/travis-core/lib/travis/api/serialize/v0/worker.rb new file mode 100644 index 00000000..79c6a695 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/worker.rb @@ -0,0 +1 @@ +require 'travis/api/serialize/v0/worker/job' diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/worker/job.rb b/vendor/travis-core/lib/travis/api/serialize/v0/worker/job.rb new file mode 100644 index 00000000..88a349fb --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/worker/job.rb @@ -0,0 +1,35 @@ +require 'travis/api/serialize/v0/worker/job/test' + +module Travis + module Api + module Serialize + module V0 + module Worker + class Job + attr_reader :job + + def initialize(job, options = {}) + @job = job + end + + def commit + job.commit + end + + def repository + job.repository + end + + def request + build.request + end + + def build + job.source + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v0/worker/job/test.rb b/vendor/travis-core/lib/travis/api/serialize/v0/worker/job/test.rb new file mode 100644 index 00000000..25159e9e --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v0/worker/job/test.rb @@ -0,0 +1,120 @@ +module Travis + module Api + module Serialize + module V0 + module Worker + class Job + class Test < Job + include Formats + + def data + { + 'type' => 'test', + # TODO legacy. remove this once workers respond to a 'job' key + 'build' => job_data, + 'job' => job_data, + 'source' => build_data, + 'repository' => repository_data, + 'pull_request' => commit.pull_request? ? pull_request_data : false, + 'config' => job.decrypted_config, + 'queue' => job.queue, + 'uuid' => Travis.uuid, + 'ssh_key' => ssh_key, + 'env_vars' => env_vars, + 'timeouts' => timeouts + } + end + + def build_data + { + 'id' => build.id, + 'number' => build.number + } + end + + def job_data + data = { + 'id' => job.id, + 'number' => job.number, + 'commit' => commit.commit, + 'commit_range' => commit.range, + 'commit_message' => commit.message, + 'branch' => commit.branch, + 'ref' => commit.pull_request? ? commit.ref : nil, + 'state' => job.state.to_s, + 'secure_env_enabled' => job.secure_env_enabled? + } + data['tag'] = request.tag_name if include_tag_name? + data['pull_request'] = commit.pull_request? ? commit.pull_request_number : false + data + end + + def repository_data + { + 'id' => repository.id, + 'slug' => repository.slug, + 'github_id' => repository.github_id, + 'source_url' => repository.source_url, + 'api_url' => repository.api_url, + 'last_build_id' => repository.last_build_id, + 'last_build_number' => repository.last_build_number, + 'last_build_started_at' => format_date(repository.last_build_started_at), + 'last_build_finished_at' => format_date(repository.last_build_finished_at), + 'last_build_duration' => repository.last_build_duration, + 'last_build_state' => repository.last_build_state.to_s, + 'description' => repository.description, + 'default_branch' => repository.default_branch + } + end + + def pull_request_data + { + 'number' => commit.pull_request_number, + 'head_repo' => request.head_repo, + 'base_repo' => request.base_repo, + 'head_branch' => request.head_branch, + 'base_branch' => request.base_branch + } + end + + def ssh_key + nil + end + + def env_vars + vars = settings.env_vars + vars = vars.public unless job.secure_env_enabled? + + vars.map do |var| + { + 'name' => var.name, + 'value' => var.value.decrypt, + 'public' => var.public + } + end + end + + def timeouts + { 'hard_limit' => timeout(:hard_limit), 'log_silence' => timeout(:log_silence) } + end + + def timeout(type) + timeout = settings.send(:"timeout_#{type}") + timeout = timeout * 60 if timeout # worker handles timeouts in seconds + timeout + end + + def include_tag_name? + Travis.config.include_tag_name_in_worker_payload && request.tag_name.present? + end + + def settings + repository.settings + end + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v1.rb b/vendor/travis-core/lib/travis/api/serialize/v1.rb new file mode 100644 index 00000000..93f6ada1 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1.rb @@ -0,0 +1,4 @@ +require 'travis/api/serialize/v1/archive' +require 'travis/api/serialize/v1/http' +require 'travis/api/serialize/v1/helpers' +require 'travis/api/serialize/v1/webhook' diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/archive.rb b/vendor/travis-core/lib/travis/api/serialize/v1/archive.rb new file mode 100644 index 00000000..7fc2c640 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/archive.rb @@ -0,0 +1 @@ +require 'travis/api/serialize/v1/archive/build' diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/archive/build.rb b/vendor/travis-core/lib/travis/api/serialize/v1/archive/build.rb new file mode 100644 index 00000000..1c1d1aae --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/archive/build.rb @@ -0,0 +1,52 @@ +require 'travis/api/serialize/v1/archive/build/job' + +module Travis + module Api + module Serialize + module V1 + module Archive + class Build + include Formats + + attr_reader :build, :commit, :repository + + def initialize(build, options = {}) + @build = build + @commit = build.commit + @repository = build.repository + end + + def data + { + 'id' => build.id, + 'number' => build.number, + 'config' => build.obfuscated_config.stringify_keys, + 'result' => 0, + 'started_at' => format_date(build.started_at), + 'finished_at' => format_date(build.finished_at), + 'duration' => build.duration, + 'commit' => 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, + 'matrix' => build.matrix.map { |job| Job.new(job).data }, + 'repository' => repository_data + } + end + + def repository_data + { + 'id' => repository.id, + 'slug' => repository.slug + } + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/archive/build/job.rb b/vendor/travis-core/lib/travis/api/serialize/v1/archive/build/job.rb new file mode 100644 index 00000000..c77227b3 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/archive/build/job.rb @@ -0,0 +1,33 @@ +module Travis + module Api + module Serialize + module V1 + module Archive + class Build + class Job + include Formats + + attr_reader :job, :commit + + def initialize(job) + @job = job + @commit = job.commit + end + + def data + { + 'id' => job.id, + 'number' => job.number, + 'config' => job.obfuscated_config, + 'started_at' => format_date(job.started_at), + 'finished_at' => format_date(job.finished_at), + 'log' => job.log_content + } + end + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/helpers.rb b/vendor/travis-core/lib/travis/api/serialize/v1/helpers.rb new file mode 100644 index 00000000..bf79516b --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/helpers.rb @@ -0,0 +1 @@ +require 'travis/api/serialize/v1/helpers/legacy' diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/helpers/legacy.rb b/vendor/travis-core/lib/travis/api/serialize/v1/helpers/legacy.rb new file mode 100644 index 00000000..4a840760 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/helpers/legacy.rb @@ -0,0 +1,36 @@ +module Travis + module Api + module Serialize + module V1 + module Helpers + module Legacy + RESULTS = { + passed: 0, + failed: 1 + } + + def legacy_repository_last_build_result(repository) + RESULTS[repository.last_build_state.try(:to_sym)] + end + + def legacy_build_state(build) + build.finished? ? 'finished' : build.state.to_s + end + + def legacy_build_result(build) + RESULTS[build.state.try(:to_sym)] + end + + def legacy_job_state(job) + job.finished? ? 'finished' : job.state.to_s + end + + def legacy_job_result(job) + RESULTS[job.state.try(:to_sym)] + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/http.rb b/vendor/travis-core/lib/travis/api/serialize/v1/http.rb new file mode 100644 index 00000000..0be99aca --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/http.rb @@ -0,0 +1,9 @@ +require 'travis/api/serialize/v1/http/branches' +require 'travis/api/serialize/v1/http/build' +require 'travis/api/serialize/v1/http/builds' +require 'travis/api/serialize/v1/http/hooks' +require 'travis/api/serialize/v1/http/job' +require 'travis/api/serialize/v1/http/jobs' +require 'travis/api/serialize/v1/http/repositories' +require 'travis/api/serialize/v1/http/repository' +require 'travis/api/serialize/v1/http/user' diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/http/branches.rb b/vendor/travis-core/lib/travis/api/serialize/v1/http/branches.rb new file mode 100644 index 00000000..a890cb01 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/http/branches.rb @@ -0,0 +1,45 @@ +require 'travis/api/serialize/v1/helpers/legacy' + +module Travis + module Api + module Serialize + module V1 + module Http + class Branches + include Formats, Helpers::Legacy + + attr_reader :builds, :options + + def initialize(builds, options = {}) + builds = builds.last_finished_builds_by_branches if builds.is_a?(Repository) # TODO remove, bc + @builds = builds + end + + def cache_key + "branches-#{builds.map(&:id).join('-')}" + end + + def updated_at + builds.compact.map(&:finished_at).compact.sort.first + end + + def data + builds.compact.map do |build| + { + 'repository_id' => build.repository_id, + 'build_id' => build.id, + 'commit' => build.commit.commit, + 'branch' => build.commit.branch, + 'message' => build.commit.message, + 'result' => legacy_build_result(build), + 'finished_at' => format_date(build.finished_at), + 'started_at' => format_date(build.started_at) + } + end + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/http/build.rb b/vendor/travis-core/lib/travis/api/serialize/v1/http/build.rb new file mode 100644 index 00000000..295199a9 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/http/build.rb @@ -0,0 +1,49 @@ +require 'travis/api/serialize/v1/http/build/job' + +module Travis + module Api + module Serialize + module V1 + module Http + class Build + include Formats, Helpers::Legacy + + attr_reader :build, :commit, :request + + def initialize(build, options = {}) + @build = build + @commit = build.commit + @request = build.request + end + + def data + { + 'id' => build.id, + 'repository_id' => build.repository_id, + 'number' => build.number, + 'config' => build.obfuscated_config.stringify_keys, + 'state' => legacy_build_state(build), + 'result' => legacy_build_result(build), + 'status' => legacy_build_result(build), + 'started_at' => format_date(build.started_at), + 'finished_at' => format_date(build.finished_at), + 'duration' => build.duration, + 'commit' => 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, + 'event_type' => build.event_type, + 'matrix' => build.matrix.map { |job| Job.new(job).data }, + } + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/http/build/job.rb b/vendor/travis-core/lib/travis/api/serialize/v1/http/build/job.rb new file mode 100644 index 00000000..8c052575 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/http/build/job.rb @@ -0,0 +1,34 @@ +module Travis + module Api + module Serialize + module V1 + module Http + class Build + class Job + include Formats, Helpers::Legacy + + attr_reader :job + + def initialize(job) + @job = job + end + + def data + { + 'id' => job.id, + 'repository_id' => job.repository_id, + 'number' => job.number, + 'config' => job.obfuscated_config.stringify_keys, + 'result' => legacy_job_result(job), + 'started_at' => format_date(job.started_at), + 'finished_at' => format_date(job.finished_at), + 'allow_failure' => job.allow_failure + } + end + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/http/builds.rb b/vendor/travis-core/lib/travis/api/serialize/v1/http/builds.rb new file mode 100644 index 00000000..c94983e0 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/http/builds.rb @@ -0,0 +1,40 @@ +module Travis + module Api + module Serialize + module V1 + module Http + class Builds + include Formats, Helpers::Legacy + + attr_reader :builds + + def initialize(builds, options = {}) + @builds = builds + end + + def data + builds.map { |build| build_data(build) } + end + + def build_data(build) + { + 'id' => build.id, + 'repository_id' => build.repository_id, + 'number' => build.number, + 'state' => legacy_build_state(build), + 'result' => legacy_build_result(build), + 'started_at' => format_date(build.started_at), + 'finished_at' => format_date(build.finished_at), + 'duration' => build.duration, + 'commit' => build.commit.commit, + 'branch' => build.commit.branch, + 'message' => build.commit.message, + 'event_type' => build.event_type, + } + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/http/hooks.rb b/vendor/travis-core/lib/travis/api/serialize/v1/http/hooks.rb new file mode 100644 index 00000000..11dbdf4f --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/http/hooks.rb @@ -0,0 +1,36 @@ +module Travis + module Api + module Serialize + module V1 + module Http + class Hooks + attr_reader :repos, :options + + def initialize(repos, options = {}) + @repos = repos + @options = options + end + + def data + repos.map { |repo| repo_data(repo) } + end + + private + + def repo_data(repo) + { + 'uid' => [repo.owner_name, repo.name].join(':'), + 'url' => "https://github.com/#{repo.owner_name}/#{repo.name}", + 'name' => repo.name, + 'owner_name' => repo.owner_name, + 'description' => repo.description, + 'active' => repo.active, + 'private' => repo.private + } + end + end + end + end + end + end +end diff --git a/lib/travis/api/v2/http/jobs.rb b/vendor/travis-core/lib/travis/api/serialize/v1/http/job.rb similarity index 50% rename from lib/travis/api/v2/http/jobs.rb rename to vendor/travis-core/lib/travis/api/serialize/v1/http/job.rb index c27bd08e..a8f8626b 100644 --- a/lib/travis/api/v2/http/jobs.rb +++ b/vendor/travis-core/lib/travis/api/serialize/v1/http/job.rb @@ -1,49 +1,32 @@ module Travis module Api - module V2 - module Http - class Jobs - include Formats + module Serialize + module V1 + module Http + class Job + include Formats, Helpers::Legacy - attr_reader :jobs, :options + attr_reader :job, :commit - def initialize(jobs, options = {}) - @jobs = jobs - @options = options - end - - def data - { - 'jobs' => jobs.map { |job| job_data(job) }, - 'commits' => jobs.map { |job| commit_data(job.commit) } - } - end - - private - - def job_data(job) - { - 'id' => job.id, - 'repository_id' => job.repository_id, - 'repository_slug' => job.repository.slug, - 'build_id' => job.source_id, - 'commit_id' => job.commit_id, - 'log_id' => job.log_id, - 'number' => job.number, - 'config' => job.obfuscated_config.stringify_keys, - 'state' => job.state.to_s, - '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 - } + def initialize(job, options = {}) + @job = job + @commit = job.commit end - def commit_data(commit) + def data { - 'id' => commit.id, - 'sha' => commit.commit, + 'id' => job.id, + 'number' => job.number, + 'config' => job.obfuscated_config.stringify_keys, + 'repository_id' => job.repository_id, + 'build_id' => job.source_id, + 'state' => job.finished? ? 'finished' : job.state.to_s, + 'result' => legacy_job_result(job), + 'status' => legacy_job_result(job), + 'started_at' => format_date(job.started_at), + 'finished_at' => format_date(job.finished_at), + 'log' => job.log_content, + 'commit' => commit.commit, 'branch' => commit.branch, 'message' => commit.message, 'committed_at' => format_date(commit.committed_at), @@ -52,8 +35,10 @@ module Travis 'committer_name' => commit.committer_name, 'committer_email' => commit.committer_email, 'compare_url' => commit.compare_url, + 'worker' => job.worker } end + end end end end diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/http/jobs.rb b/vendor/travis-core/lib/travis/api/serialize/v1/http/jobs.rb new file mode 100644 index 00000000..42839735 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/http/jobs.rb @@ -0,0 +1,36 @@ +module Travis + module Api + module Serialize + module V1 + module Http + class Jobs + include Formats, Helpers::Legacy + + attr_reader :jobs + + def initialize(jobs, options = {}) + @jobs = jobs + end + + def data + jobs.map { |job| job_data(job) } + end + + def job_data(job) + commit = job.commit + { + 'id' => job.id, + 'repository_id' => job.repository_id, + 'number' => job.number, + 'state' => legacy_job_state(job), + 'queue' => job.queue, + 'allow_failure' => job.allow_failure + } + end + end + end + end + end + end + +end diff --git a/lib/travis/api/v2/http/repositories.rb b/vendor/travis-core/lib/travis/api/serialize/v1/http/repositories.rb similarity index 55% rename from lib/travis/api/v2/http/repositories.rb rename to vendor/travis-core/lib/travis/api/serialize/v1/http/repositories.rb index 84871d16..dc534cbd 100644 --- a/lib/travis/api/v2/http/repositories.rb +++ b/vendor/travis-core/lib/travis/api/serialize/v1/http/repositories.rb @@ -1,24 +1,20 @@ module Travis module Api - module V2 - module Http - class Repositories - include Formats + module Serialize + module V1 + module Http + class Repositories + include Formats, Helpers::Legacy - attr_reader :repositories, :options + attr_reader :repositories - def initialize(repositories, options = {}) - @repositories = repositories - @options = options - end + def initialize(repositories, options = {}) + @repositories = repositories + end - def data - { - 'repos' => repositories.map { |repository| repository_data(repository) } - } - end - - private + def data + repositories.map { |repository| repository_data(repository) } + end def repository_data(repository) { @@ -27,15 +23,15 @@ module Travis 'description' => repository.description, '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_status' => legacy_repository_last_build_result(repository), + 'last_build_result' => legacy_repository_last_build_result(repository), '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), - 'active' => repository.active, - 'github_language' => repository.github_language } end + end end end end diff --git a/lib/travis/api/v2/http/repository.rb b/vendor/travis-core/lib/travis/api/serialize/v1/http/repository.rb similarity index 50% rename from lib/travis/api/v2/http/repository.rb rename to vendor/travis-core/lib/travis/api/serialize/v1/http/repository.rb index c6c716e0..960b9fe7 100644 --- a/lib/travis/api/v2/http/repository.rb +++ b/vendor/travis-core/lib/travis/api/serialize/v1/http/repository.rb @@ -1,44 +1,36 @@ module Travis module Api - module V2 - module Http - class Repository - include Formats + module Serialize + module V1 + module Http + class Repository + include Formats, Helpers::Legacy - attr_reader :repository, :options + attr_reader :repository, :options - def initialize(repository, options = {}) - @repository = repository - end + def initialize(repository, options = {}) + @repository = repository + end - def data - { - 'repo' => repository_data(repository) - } - end - - private - - # TODO why does this not include the last build? (i.e. 'builds' => { last build here }) - def repository_data(repository) + def data { 'id' => repository.id, 'slug' => repository.slug, - 'active' => repository.active, 'description' => repository.description, + 'public_key' => repository.key.public_key, '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_status' => legacy_repository_last_build_result(repository), + 'last_build_result' => legacy_repository_last_build_result(repository), '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 } end + end end end end end end - diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/http/user.rb b/vendor/travis-core/lib/travis/api/serialize/v1/http/user.rb new file mode 100644 index 00000000..47072a6b --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/http/user.rb @@ -0,0 +1,33 @@ +module Travis + module Api + module Serialize + module V1 + module Http + class User + include Formats + + attr_reader :user, :options + + def initialize(user, options = {}) + @user = user + @options = options + end + + def data + { + 'login' => user.login, + 'name' => user.name, + 'email' => user.email, + 'gravatar_id' => user.gravatar_id, + 'locale' => user.locale, + 'is_syncing' => user.is_syncing, + 'synced_at' => format_date(user.synced_at) + } + end + end + end + end + end + end + +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/webhook.rb b/vendor/travis-core/lib/travis/api/serialize/v1/webhook.rb new file mode 100644 index 00000000..a8f5484e --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/webhook.rb @@ -0,0 +1 @@ +require 'travis/api/serialize/v1/webhook/build' diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/webhook/build.rb b/vendor/travis-core/lib/travis/api/serialize/v1/webhook/build.rb new file mode 100644 index 00000000..0c7db7a9 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/webhook/build.rb @@ -0,0 +1,29 @@ +require 'travis/api/serialize/v1/webhook/build/finished' + +module Travis + module Api + module Serialize + module V1 + module Webhook + class Build + attr_reader :build, :commit, :request, :repository, :options + + def initialize(build, options = {}) + @build = build + @commit = build.commit + @request = build.request + @repository = build.repository + @options = options + end + + private + + def build_url + ["https://#{Travis.config.host}", repository.slug, 'builds', build.id].join('/') + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/webhook/build/finished.rb b/vendor/travis-core/lib/travis/api/serialize/v1/webhook/build/finished.rb new file mode 100644 index 00000000..b39982b7 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/webhook/build/finished.rb @@ -0,0 +1,72 @@ +require 'travis/api/serialize/v1/webhook/build/finished/job' + +module Travis + module Api + module Serialize + module V1 + module Webhook + class Build + class Finished < Build + include Formats + + def data + data = { + 'id' => build.id, + 'repository' => repository_data, + 'number' => build.number, + 'config' => build.obfuscated_config.stringify_keys, + 'status' => build.result, + 'result' => build.result, + 'status_message' => result_message, + 'result_message' => result_message, + 'started_at' => format_date(build.started_at), + 'finished_at' => format_date(build.finished_at), + 'duration' => build.duration, + 'build_url' => build_url, + 'commit_id' => commit.id, + 'commit' => commit.commit, + 'base_commit' => request.base_commit, + 'head_commit' => request.head_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, + 'matrix' => build.matrix.map { |job| Job.new(job, options).data }, + 'type' => build.event_type, + 'state' => build.state.to_s, + 'pull_request' => build.pull_request?, + 'pull_request_number' => build.pull_request_number, + 'pull_request_title' => build.pull_request_title, + 'tag' => request.tag_name + } + + if commit.pull_request? + data['pull_request_number'] = commit.pull_request_number + end + + data + end + + def repository_data + { + 'id' => repository.id, + 'name' => repository.name, + 'owner_name' => repository.owner_name, + 'url' => repository.url + } + end + + def result_message + @result_message ||= ::Build::ResultMessage.new(build).short + end + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/serialize/v1/webhook/build/finished/job.rb b/vendor/travis-core/lib/travis/api/serialize/v1/webhook/build/finished/job.rb new file mode 100644 index 00000000..7d7f51c9 --- /dev/null +++ b/vendor/travis-core/lib/travis/api/serialize/v1/webhook/build/finished/job.rb @@ -0,0 +1,52 @@ +module Travis + module Api + module Serialize + module V1 + module Webhook + class Build + class Finished < Build + class Job + include Formats + + attr_reader :job, :commit, :options + + def initialize(job, options = {}) + @job = job + @commit = job.commit + @options = options + end + + def data + data = { + 'id' => job.id, + 'repository_id' => job.repository_id, + 'parent_id' => job.source_id, + 'number' => job.number, + 'state' => job.finished? ? 'finished' : job.state.to_s, + 'config' => job.obfuscated_config, + 'status' => job.result, + 'result' => job.result, + '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, + 'allow_failure' => job.allow_failure + } + data['log'] = job.log_content || '' if options[:include_logs] + data['started_at'] = format_date(job.started_at) if job.started? + data['finished_at'] = format_date(job.finished_at) if job.finished? + data + end + end + end + end + end + end + end + end +end diff --git a/vendor/travis-core/lib/travis/api/v0.rb b/vendor/travis-core/lib/travis/api/v0.rb deleted file mode 100644 index d21ff344..00000000 --- a/vendor/travis-core/lib/travis/api/v0.rb +++ /dev/null @@ -1,11 +0,0 @@ -module Travis - module Api - # V0 is an internal api that we can change at any time - module V0 - require 'travis/api/v0/event' - require 'travis/api/v0/notification' - require 'travis/api/v0/pusher' - require 'travis/api/v0/worker' - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/event.rb b/vendor/travis-core/lib/travis/api/v0/event.rb deleted file mode 100644 index efd03a8d..00000000 --- a/vendor/travis-core/lib/travis/api/v0/event.rb +++ /dev/null @@ -1,12 +0,0 @@ -module Travis - module Api - module V0 - module Event - require 'travis/api/v0/event/build' - require 'travis/api/v0/event/job' - end - end - end -end - - diff --git a/vendor/travis-core/lib/travis/api/v0/event/build.rb b/vendor/travis-core/lib/travis/api/v0/event/build.rb deleted file mode 100644 index 797d399a..00000000 --- a/vendor/travis-core/lib/travis/api/v0/event/build.rb +++ /dev/null @@ -1,95 +0,0 @@ -module Travis - module Api - 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 - - diff --git a/vendor/travis-core/lib/travis/api/v0/event/job.rb b/vendor/travis-core/lib/travis/api/v0/event/job.rb deleted file mode 100644 index ddbc58e8..00000000 --- a/vendor/travis-core/lib/travis/api/v0/event/job.rb +++ /dev/null @@ -1,38 +0,0 @@ -module Travis - module Api - module V0 - module Event - class Job - include Formats - - attr_reader :job - - def initialize(job, options = {}) - @job = job - # @options = options - end - - def data(extra = {}) - { - 'job' => job_data, - } - end - - private - - def job_data - { - 'queue' => job.queue, - 'created_at' => job.created_at, - 'started_at' => job.started_at, - 'finished_at' => job.finished_at, - } - end - end - end - end - end -end - - - diff --git a/vendor/travis-core/lib/travis/api/v0/notification.rb b/vendor/travis-core/lib/travis/api/v0/notification.rb deleted file mode 100644 index 45d37770..00000000 --- a/vendor/travis-core/lib/travis/api/v0/notification.rb +++ /dev/null @@ -1,12 +0,0 @@ -module Travis - module Api - module V0 - module Notification - require 'travis/api/v0/notification/build' - require 'travis/api/v0/notification/repository' - require 'travis/api/v0/notification/user' - end - end - end -end - diff --git a/vendor/travis-core/lib/travis/api/v0/notification/build.rb b/vendor/travis-core/lib/travis/api/v0/notification/build.rb deleted file mode 100644 index 27b00504..00000000 --- a/vendor/travis-core/lib/travis/api/v0/notification/build.rb +++ /dev/null @@ -1,28 +0,0 @@ -module Travis - module Api - module V0 - module Notification - class Build - attr_reader :build - - def initialize(build, options = {}) - @build = build - end - - def data - { - 'build' => build_data - } - end - - def build_data - { - 'id' => build.id - } - end - end - end - end - end -end - diff --git a/vendor/travis-core/lib/travis/api/v0/notification/repository.rb b/vendor/travis-core/lib/travis/api/v0/notification/repository.rb deleted file mode 100644 index 6b9861b8..00000000 --- a/vendor/travis-core/lib/travis/api/v0/notification/repository.rb +++ /dev/null @@ -1,28 +0,0 @@ -module Travis - module Api - module V0 - module Notification - class Repository - attr_reader :repository - - def initialize(repository, options = {}) - @repository = repository - end - - def data - { - 'repository' => repository_data - } - end - - def repository_data - { - 'id' => repository.id, - 'slug' => repository.slug - } - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/notification/user.rb b/vendor/travis-core/lib/travis/api/v0/notification/user.rb deleted file mode 100644 index 95ba9192..00000000 --- a/vendor/travis-core/lib/travis/api/v0/notification/user.rb +++ /dev/null @@ -1,28 +0,0 @@ -module Travis - module Api - module V0 - module Notification - class User - attr_reader :user - - def initialize(user, options = {}) - @user = user - end - - def data - { - 'user' => user_data - } - end - - def user_data - { - 'id' => user.id, - 'login' => user.login - } - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher.rb b/vendor/travis-core/lib/travis/api/v0/pusher.rb deleted file mode 100644 index 852c3045..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher.rb +++ /dev/null @@ -1,11 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - require 'travis/api/v0/pusher/annotation' - require 'travis/api/v0/pusher/build' - require 'travis/api/v0/pusher/job' - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/annotation.rb b/vendor/travis-core/lib/travis/api/v0/pusher/annotation.rb deleted file mode 100644 index f29f3d42..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/annotation.rb +++ /dev/null @@ -1,33 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Annotation - require 'travis/api/v0/pusher/annotation/created' - require 'travis/api/v0/pusher/annotation/updated' - - include Formats - - attr_reader :annotation - - def initialize(annotation, options = {}) - @annotation = annotation - end - - def data - { - "annotation" => { - "id" => annotation.id, - "job_id" => annotation.job_id, - "description" => annotation.description, - "url" => annotation.url, - "status" => annotation.status, - "provider_name" => annotation.annotation_provider.name, - } - } - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/annotation/created.rb b/vendor/travis-core/lib/travis/api/v0/pusher/annotation/created.rb deleted file mode 100644 index fb476fd1..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/annotation/created.rb +++ /dev/null @@ -1,12 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Annotation - class Created < Annotation - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/annotation/updated.rb b/vendor/travis-core/lib/travis/api/v0/pusher/annotation/updated.rb deleted file mode 100644 index 99865c40..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/annotation/updated.rb +++ /dev/null @@ -1,12 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Annotation - class Updated < Annotation - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build.rb deleted file mode 100644 index 3762aa38..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/build.rb +++ /dev/null @@ -1,111 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Build - require 'travis/api/v0/pusher/build/canceled' - require 'travis/api/v0/pusher/build/created' - require 'travis/api/v0/pusher/build/received' - require 'travis/api/v0/pusher/build/started' - require 'travis/api/v0/pusher/build/finished' - - 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 - diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build/canceled.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build/canceled.rb deleted file mode 100644 index 19ae8256..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/build/canceled.rb +++ /dev/null @@ -1,12 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Build - class Canceled < Build - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build/created.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build/created.rb deleted file mode 100644 index 2a0d008e..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/build/created.rb +++ /dev/null @@ -1,15 +0,0 @@ -require 'travis/api/v1' - -module Travis - module Api - module V0 - module Pusher - class Build - class Created < Build - end - end - end - end - end -end - diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build/finished.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build/finished.rb deleted file mode 100644 index 299df81d..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/build/finished.rb +++ /dev/null @@ -1,14 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Build - class Finished < Build - end - end - end - end - end -end - - diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build/received.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build/received.rb deleted file mode 100644 index 005f2ab2..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/build/received.rb +++ /dev/null @@ -1,12 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Build - class Received < Build - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build/received/job.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build/received/job.rb deleted file mode 100644 index 6786f598..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/build/received/job.rb +++ /dev/null @@ -1,47 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Build - class Received < Build - class Job - include Formats, V1::Helpers::Legacy - - attr_reader :job, :commit - - def initialize(job) - @job = job - @commit = job.commit - end - - def data - { - 'id' => job.id, - 'repository_id' => job.repository_id, - 'repository_private' => repository.private, - 'parent_id' => job.source_id, - 'number' => job.number, - 'state' => job.state.to_s, - 'result' => legacy_job_result(job), - 'config' => job.obfuscated_config, - 'commit' => commit.commit, - 'branch' => commit.branch, - 'message' => commit.message, - 'compare_url' => commit.compare_url, - 'started_at' => format_date(job.started_at), - 'finished_at' => format_date(job.finished_at), - '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, - 'allow_failure' => job.allow_failure - } - end - end - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build/started.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build/started.rb deleted file mode 100644 index 1ad598b0..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/build/started.rb +++ /dev/null @@ -1,13 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Build - class Started < Build - end - end - end - end - end -end - diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/build/started/job.rb b/vendor/travis-core/lib/travis/api/v0/pusher/build/started/job.rb deleted file mode 100644 index 4a94660b..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/build/started/job.rb +++ /dev/null @@ -1,47 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Build - class Started < Build - class Job - include Formats, V1::Helpers::Legacy - - attr_reader :job, :commit - - def initialize(job) - @job = job - @commit = job.commit - end - - def data - { - 'id' => job.id, - 'repository_id' => job.repository_id, - 'repository_private' => repository.private, - 'parent_id' => job.source_id, - 'number' => job.number, - 'state' => job.state.to_s, - 'result' => legacy_job_result(job), - 'config' => job.obfuscated_config, - 'commit' => commit.commit, - 'branch' => commit.branch, - 'message' => commit.message, - 'compare_url' => commit.compare_url, - 'started_at' => format_date(job.started_at), - 'finished_at' => format_date(job.finished_at), - '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, - 'allow_failure' => job.allow_failure - } - end - end - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/job.rb b/vendor/travis-core/lib/travis/api/v0/pusher/job.rb deleted file mode 100644 index efd3cbc8..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/job.rb +++ /dev/null @@ -1,67 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Job - require 'travis/api/v0/pusher/job/canceled' - require 'travis/api/v0/pusher/job/created' - require 'travis/api/v0/pusher/job/log' - require 'travis/api/v0/pusher/job/received' - require 'travis/api/v0/pusher/job/started' - require 'travis/api/v0/pusher/job/finished' - - include Formats - - attr_reader :job, :options - - def initialize(job, options = {}) - @job = job - @options = options - end - - def data - job_data(job).merge( - 'commit' => commit_data(job.commit) - ) - end - - private - - def job_data(job) - { - 'id' => job.id, - 'repository_id' => job.repository_id, - 'repository_slug' => job.repository.slug, - 'repository_private' => job.repository.private, - 'build_id' => job.source_id, - 'commit_id' => job.commit_id, - 'log_id' => job.log_id, - 'number' => job.number, - 'state' => job.state.to_s, - 'started_at' => format_date(job.started_at), - 'finished_at' => format_date(job.finished_at), - 'queue' => job.queue, - 'allow_failure' => job.allow_failure, - 'annotation_ids' => job.annotation_ids - } - 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 - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/job/canceled.rb b/vendor/travis-core/lib/travis/api/v0/pusher/job/canceled.rb deleted file mode 100644 index 426d03f3..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/job/canceled.rb +++ /dev/null @@ -1,12 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Job - class Canceled < Job - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/job/created.rb b/vendor/travis-core/lib/travis/api/v0/pusher/job/created.rb deleted file mode 100644 index c2af620e..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/job/created.rb +++ /dev/null @@ -1,12 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Job - class Created < Job - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/job/finished.rb b/vendor/travis-core/lib/travis/api/v0/pusher/job/finished.rb deleted file mode 100644 index 2214041c..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/job/finished.rb +++ /dev/null @@ -1,12 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Job - class Finished < Job - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/job/log.rb b/vendor/travis-core/lib/travis/api/v0/pusher/job/log.rb deleted file mode 100644 index 54115ee6..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/job/log.rb +++ /dev/null @@ -1,31 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Job - class Log - attr_reader :job, :options - - def initialize(job, options = {}) - @job = job - @options = options - end - - def data - { - 'id' => job.id, - 'build_id' => job.source_id, - 'repository_id' => job.repository_id, - 'repository_private' => repository.private, - '_log' => options[:_log], - 'number' => options[:number], - 'final' => options[:final] - } - end - end - end - end - end - end -end - diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/job/received.rb b/vendor/travis-core/lib/travis/api/v0/pusher/job/received.rb deleted file mode 100644 index 0921280d..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/job/received.rb +++ /dev/null @@ -1,12 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Job - class Received < Job - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/pusher/job/started.rb b/vendor/travis-core/lib/travis/api/v0/pusher/job/started.rb deleted file mode 100644 index 90ccc963..00000000 --- a/vendor/travis-core/lib/travis/api/v0/pusher/job/started.rb +++ /dev/null @@ -1,12 +0,0 @@ -module Travis - module Api - module V0 - module Pusher - class Job - class Started < Job - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/worker.rb b/vendor/travis-core/lib/travis/api/v0/worker.rb deleted file mode 100644 index 4826160e..00000000 --- a/vendor/travis-core/lib/travis/api/v0/worker.rb +++ /dev/null @@ -1,9 +0,0 @@ -module Travis - module Api - module V0 - module Worker - require 'travis/api/v0/worker/job' - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/worker/job.rb b/vendor/travis-core/lib/travis/api/v0/worker/job.rb deleted file mode 100644 index 796d0620..00000000 --- a/vendor/travis-core/lib/travis/api/v0/worker/job.rb +++ /dev/null @@ -1,33 +0,0 @@ -module Travis - module Api - module V0 - module Worker - class Job - require 'travis/api/v0/worker/job/test' - - attr_reader :job - - def initialize(job, options = {}) - @job = job - end - - def commit - job.commit - end - - def repository - job.repository - end - - def request - build.request - end - - def build - job.source - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v0/worker/job/test.rb b/vendor/travis-core/lib/travis/api/v0/worker/job/test.rb deleted file mode 100644 index 8462a9bc..00000000 --- a/vendor/travis-core/lib/travis/api/v0/worker/job/test.rb +++ /dev/null @@ -1,118 +0,0 @@ -module Travis - module Api - module V0 - module Worker - class Job - class Test < Job - include Formats - - def data - { - 'type' => 'test', - # TODO legacy. remove this once workers respond to a 'job' key - 'build' => job_data, - 'job' => job_data, - 'source' => build_data, - 'repository' => repository_data, - 'pull_request' => commit.pull_request? ? pull_request_data : false, - 'config' => job.decrypted_config, - 'queue' => job.queue, - 'uuid' => Travis.uuid, - 'ssh_key' => ssh_key, - 'env_vars' => env_vars, - 'timeouts' => timeouts - } - end - - def build_data - { - 'id' => build.id, - 'number' => build.number - } - end - - def job_data - data = { - 'id' => job.id, - 'number' => job.number, - 'commit' => commit.commit, - 'commit_range' => commit.range, - 'commit_message' => commit.message, - 'branch' => commit.branch, - 'ref' => commit.pull_request? ? commit.ref : nil, - 'state' => job.state.to_s, - 'secure_env_enabled' => job.secure_env_enabled? - } - data['tag'] = request.tag_name if include_tag_name? - data['pull_request'] = commit.pull_request? ? commit.pull_request_number : false - data - end - - def repository_data - { - 'id' => repository.id, - 'slug' => repository.slug, - 'github_id' => repository.github_id, - 'source_url' => repository.source_url, - 'api_url' => repository.api_url, - 'last_build_id' => repository.last_build_id, - 'last_build_number' => repository.last_build_number, - 'last_build_started_at' => format_date(repository.last_build_started_at), - 'last_build_finished_at' => format_date(repository.last_build_finished_at), - 'last_build_duration' => repository.last_build_duration, - 'last_build_state' => repository.last_build_state.to_s, - 'description' => repository.description, - 'default_branch' => repository.default_branch - } - end - - def pull_request_data - { - 'number' => commit.pull_request_number, - 'head_repo' => request.head_repo, - 'base_repo' => request.base_repo, - 'head_branch' => request.head_branch, - 'base_branch' => request.base_branch - } - end - - def ssh_key - nil - end - - def env_vars - vars = settings.env_vars - vars = vars.public unless job.secure_env_enabled? - - vars.map do |var| - { - 'name' => var.name, - 'value' => var.value.decrypt, - 'public' => var.public - } - end - end - - def timeouts - { 'hard_limit' => timeout(:hard_limit), 'log_silence' => timeout(:log_silence) } - end - - def timeout(type) - timeout = settings.send(:"timeout_#{type}") - timeout = timeout * 60 if timeout # worker handles timeouts in seconds - timeout - end - - def include_tag_name? - Travis.config.include_tag_name_in_worker_payload && request.tag_name.present? - end - - def settings - repository.settings - end - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1.rb b/vendor/travis-core/lib/travis/api/v1.rb deleted file mode 100644 index bb29b348..00000000 --- a/vendor/travis-core/lib/travis/api/v1.rb +++ /dev/null @@ -1,10 +0,0 @@ -module Travis - module Api - module V1 - require 'travis/api/v1/archive' - require 'travis/api/v1/http' - require 'travis/api/v1/helpers' - require 'travis/api/v1/webhook' - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/archive.rb b/vendor/travis-core/lib/travis/api/v1/archive.rb deleted file mode 100644 index db343c81..00000000 --- a/vendor/travis-core/lib/travis/api/v1/archive.rb +++ /dev/null @@ -1,9 +0,0 @@ -module Travis - module Api - module V1 - module Archive - require 'travis/api/v1/archive/build' - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/archive/build.rb b/vendor/travis-core/lib/travis/api/v1/archive/build.rb deleted file mode 100644 index 9911cd0d..00000000 --- a/vendor/travis-core/lib/travis/api/v1/archive/build.rb +++ /dev/null @@ -1,50 +0,0 @@ -module Travis - module Api - module V1 - module Archive - class Build - autoload :Job, 'travis/api/v1/archive/build/job' - - include Formats - - attr_reader :build, :commit, :repository - - def initialize(build, options = {}) - @build = build - @commit = build.commit - @repository = build.repository - end - - def data - { - 'id' => build.id, - 'number' => build.number, - 'config' => build.obfuscated_config.stringify_keys, - 'result' => 0, - 'started_at' => format_date(build.started_at), - 'finished_at' => format_date(build.finished_at), - 'duration' => build.duration, - 'commit' => 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, - 'matrix' => build.matrix.map { |job| Job.new(job).data }, - 'repository' => repository_data - } - end - - def repository_data - { - 'id' => repository.id, - 'slug' => repository.slug - } - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/archive/build/job.rb b/vendor/travis-core/lib/travis/api/v1/archive/build/job.rb deleted file mode 100644 index 110d971a..00000000 --- a/vendor/travis-core/lib/travis/api/v1/archive/build/job.rb +++ /dev/null @@ -1,31 +0,0 @@ -module Travis - module Api - module V1 - module Archive - class Build - class Job - include Formats - - attr_reader :job, :commit - - def initialize(job) - @job = job - @commit = job.commit - end - - def data - { - 'id' => job.id, - 'number' => job.number, - 'config' => job.obfuscated_config, - 'started_at' => format_date(job.started_at), - 'finished_at' => format_date(job.finished_at), - 'log' => job.log_content - } - end - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/helpers.rb b/vendor/travis-core/lib/travis/api/v1/helpers.rb deleted file mode 100644 index c4905ed9..00000000 --- a/vendor/travis-core/lib/travis/api/v1/helpers.rb +++ /dev/null @@ -1,9 +0,0 @@ -module Travis - module Api - module V1 - module Helpers - require 'travis/api/v1/helpers/legacy' - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/helpers/legacy.rb b/vendor/travis-core/lib/travis/api/v1/helpers/legacy.rb deleted file mode 100644 index 2a8d3a8b..00000000 --- a/vendor/travis-core/lib/travis/api/v1/helpers/legacy.rb +++ /dev/null @@ -1,34 +0,0 @@ -module Travis - module Api - module V1 - module Helpers - module Legacy - RESULTS = { - passed: 0, - failed: 1 - } - - def legacy_repository_last_build_result(repository) - RESULTS[repository.last_build_state.try(:to_sym)] - end - - def legacy_build_state(build) - build.finished? ? 'finished' : build.state.to_s - end - - def legacy_build_result(build) - RESULTS[build.state.try(:to_sym)] - end - - def legacy_job_state(job) - job.finished? ? 'finished' : job.state.to_s - end - - def legacy_job_result(job) - RESULTS[job.state.try(:to_sym)] - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/http.rb b/vendor/travis-core/lib/travis/api/v1/http.rb deleted file mode 100644 index a7db9f95..00000000 --- a/vendor/travis-core/lib/travis/api/v1/http.rb +++ /dev/null @@ -1,17 +0,0 @@ -module Travis - module Api - module V1 - module Http - require 'travis/api/v1/http/branches' - require 'travis/api/v1/http/build' - require 'travis/api/v1/http/builds' - require 'travis/api/v1/http/hooks' - require 'travis/api/v1/http/job' - require 'travis/api/v1/http/jobs' - require 'travis/api/v1/http/repositories' - require 'travis/api/v1/http/repository' - require 'travis/api/v1/http/user' - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/http/branches.rb b/vendor/travis-core/lib/travis/api/v1/http/branches.rb deleted file mode 100644 index 30e0c01d..00000000 --- a/vendor/travis-core/lib/travis/api/v1/http/branches.rb +++ /dev/null @@ -1,43 +0,0 @@ -require 'travis/api/v1/helpers/legacy' - -module Travis - module Api - module V1 - module Http - class Branches - include Formats, Helpers::Legacy - - attr_reader :builds, :options - - def initialize(builds, options = {}) - builds = builds.last_finished_builds_by_branches if builds.is_a?(Repository) # TODO remove, bc - @builds = builds - end - - def cache_key - "branches-#{builds.map(&:id).join('-')}" - end - - def updated_at - builds.compact.map(&:finished_at).compact.sort.first - end - - def data - builds.compact.map do |build| - { - 'repository_id' => build.repository_id, - 'build_id' => build.id, - 'commit' => build.commit.commit, - 'branch' => build.commit.branch, - 'message' => build.commit.message, - 'result' => legacy_build_result(build), - 'finished_at' => format_date(build.finished_at), - 'started_at' => format_date(build.started_at) - } - end - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/http/build.rb b/vendor/travis-core/lib/travis/api/v1/http/build.rb deleted file mode 100644 index e0431718..00000000 --- a/vendor/travis-core/lib/travis/api/v1/http/build.rb +++ /dev/null @@ -1,47 +0,0 @@ -module Travis - module Api - module V1 - module Http - class Build - require 'travis/api/v1/http/build/job' - - include Formats, Helpers::Legacy - - attr_reader :build, :commit, :request - - def initialize(build, options = {}) - @build = build - @commit = build.commit - @request = build.request - end - - def data - { - 'id' => build.id, - 'repository_id' => build.repository_id, - 'number' => build.number, - 'config' => build.obfuscated_config.stringify_keys, - 'state' => legacy_build_state(build), - 'result' => legacy_build_result(build), - 'status' => legacy_build_result(build), - 'started_at' => format_date(build.started_at), - 'finished_at' => format_date(build.finished_at), - 'duration' => build.duration, - 'commit' => 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, - 'event_type' => build.event_type, - 'matrix' => build.matrix.map { |job| Job.new(job).data }, - } - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/http/build/job.rb b/vendor/travis-core/lib/travis/api/v1/http/build/job.rb deleted file mode 100644 index e924041d..00000000 --- a/vendor/travis-core/lib/travis/api/v1/http/build/job.rb +++ /dev/null @@ -1,32 +0,0 @@ -module Travis - module Api - module V1 - module Http - class Build - class Job - include Formats, Helpers::Legacy - - attr_reader :job - - def initialize(job) - @job = job - end - - def data - { - 'id' => job.id, - 'repository_id' => job.repository_id, - 'number' => job.number, - 'config' => job.obfuscated_config.stringify_keys, - 'result' => legacy_job_result(job), - 'started_at' => format_date(job.started_at), - 'finished_at' => format_date(job.finished_at), - 'allow_failure' => job.allow_failure - } - end - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/http/builds.rb b/vendor/travis-core/lib/travis/api/v1/http/builds.rb deleted file mode 100644 index 74ca3e3d..00000000 --- a/vendor/travis-core/lib/travis/api/v1/http/builds.rb +++ /dev/null @@ -1,38 +0,0 @@ -module Travis - module Api - module V1 - module Http - class Builds - include Formats, Helpers::Legacy - - attr_reader :builds - - def initialize(builds, options = {}) - @builds = builds - end - - def data - builds.map { |build| build_data(build) } - end - - def build_data(build) - { - 'id' => build.id, - 'repository_id' => build.repository_id, - 'number' => build.number, - 'state' => legacy_build_state(build), - 'result' => legacy_build_result(build), - 'started_at' => format_date(build.started_at), - 'finished_at' => format_date(build.finished_at), - 'duration' => build.duration, - 'commit' => build.commit.commit, - 'branch' => build.commit.branch, - 'message' => build.commit.message, - 'event_type' => build.event_type, - } - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/http/hooks.rb b/vendor/travis-core/lib/travis/api/v1/http/hooks.rb deleted file mode 100644 index a35412cb..00000000 --- a/vendor/travis-core/lib/travis/api/v1/http/hooks.rb +++ /dev/null @@ -1,34 +0,0 @@ -module Travis - module Api - module V1 - module Http - class Hooks - attr_reader :repos, :options - - def initialize(repos, options = {}) - @repos = repos - @options = options - end - - def data - repos.map { |repo| repo_data(repo) } - end - - private - - def repo_data(repo) - { - 'uid' => [repo.owner_name, repo.name].join(':'), - 'url' => "https://github.com/#{repo.owner_name}/#{repo.name}", - 'name' => repo.name, - 'owner_name' => repo.owner_name, - 'description' => repo.description, - 'active' => repo.active, - 'private' => repo.private - } - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/http/job.rb b/vendor/travis-core/lib/travis/api/v1/http/job.rb deleted file mode 100644 index dd832083..00000000 --- a/vendor/travis-core/lib/travis/api/v1/http/job.rb +++ /dev/null @@ -1,44 +0,0 @@ -module Travis - module Api - module V1 - module Http - class Job - include Formats, Helpers::Legacy - - attr_reader :job, :commit - - def initialize(job, options = {}) - @job = job - @commit = job.commit - end - - def data - { - 'id' => job.id, - 'number' => job.number, - 'config' => job.obfuscated_config.stringify_keys, - 'repository_id' => job.repository_id, - 'build_id' => job.source_id, - 'state' => job.finished? ? 'finished' : job.state.to_s, - 'result' => legacy_job_result(job), - 'status' => legacy_job_result(job), - 'started_at' => format_date(job.started_at), - 'finished_at' => format_date(job.finished_at), - 'log' => job.log_content, - 'commit' => 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, - 'worker' => job.worker - } - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/http/jobs.rb b/vendor/travis-core/lib/travis/api/v1/http/jobs.rb deleted file mode 100644 index 3279211b..00000000 --- a/vendor/travis-core/lib/travis/api/v1/http/jobs.rb +++ /dev/null @@ -1,34 +0,0 @@ -module Travis - module Api - module V1 - module Http - class Jobs - include Formats, Helpers::Legacy - - attr_reader :jobs - - def initialize(jobs, options = {}) - @jobs = jobs - end - - def data - jobs.map { |job| job_data(job) } - end - - def job_data(job) - commit = job.commit - { - 'id' => job.id, - 'repository_id' => job.repository_id, - 'number' => job.number, - 'state' => legacy_job_state(job), - 'queue' => job.queue, - 'allow_failure' => job.allow_failure - } - end - end - end - end - end -end - diff --git a/vendor/travis-core/lib/travis/api/v1/http/repositories.rb b/vendor/travis-core/lib/travis/api/v1/http/repositories.rb deleted file mode 100644 index efb00792..00000000 --- a/vendor/travis-core/lib/travis/api/v1/http/repositories.rb +++ /dev/null @@ -1,37 +0,0 @@ -module Travis - module Api - module V1 - module Http - class Repositories - include Formats, Helpers::Legacy - - attr_reader :repositories - - def initialize(repositories, options = {}) - @repositories = repositories - end - - def data - repositories.map { |repository| repository_data(repository) } - end - - def repository_data(repository) - { - 'id' => repository.id, - 'slug' => repository.slug, - 'description' => repository.description, - 'last_build_id' => repository.last_build_id, - 'last_build_number' => repository.last_build_number, - 'last_build_status' => legacy_repository_last_build_result(repository), - 'last_build_result' => legacy_repository_last_build_result(repository), - '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), - } - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/http/repository.rb b/vendor/travis-core/lib/travis/api/v1/http/repository.rb deleted file mode 100644 index dfceebd0..00000000 --- a/vendor/travis-core/lib/travis/api/v1/http/repository.rb +++ /dev/null @@ -1,34 +0,0 @@ -module Travis - module Api - module V1 - module Http - class Repository - include Formats, Helpers::Legacy - - attr_reader :repository, :options - - def initialize(repository, options = {}) - @repository = repository - end - - def data - { - 'id' => repository.id, - 'slug' => repository.slug, - 'description' => repository.description, - 'public_key' => repository.key.public_key, - 'last_build_id' => repository.last_build_id, - 'last_build_number' => repository.last_build_number, - 'last_build_status' => legacy_repository_last_build_result(repository), - 'last_build_result' => legacy_repository_last_build_result(repository), - '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), - } - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/http/user.rb b/vendor/travis-core/lib/travis/api/v1/http/user.rb deleted file mode 100644 index 833f7533..00000000 --- a/vendor/travis-core/lib/travis/api/v1/http/user.rb +++ /dev/null @@ -1,31 +0,0 @@ -module Travis - module Api - module V1 - module Http - class User - include Formats - - attr_reader :user, :options - - def initialize(user, options = {}) - @user = user - @options = options - end - - def data - { - 'login' => user.login, - 'name' => user.name, - 'email' => user.email, - 'gravatar_id' => user.gravatar_id, - 'locale' => user.locale, - 'is_syncing' => user.is_syncing, - 'synced_at' => format_date(user.synced_at) - } - end - end - end - end - end -end - diff --git a/vendor/travis-core/lib/travis/api/v1/webhook.rb b/vendor/travis-core/lib/travis/api/v1/webhook.rb deleted file mode 100644 index 2b38d28f..00000000 --- a/vendor/travis-core/lib/travis/api/v1/webhook.rb +++ /dev/null @@ -1,9 +0,0 @@ -module Travis - module Api - module V1 - module Webhook - require 'travis/api/v1/webhook/build' - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/webhook/build.rb b/vendor/travis-core/lib/travis/api/v1/webhook/build.rb deleted file mode 100644 index ccea2076..00000000 --- a/vendor/travis-core/lib/travis/api/v1/webhook/build.rb +++ /dev/null @@ -1,27 +0,0 @@ -module Travis - module Api - module V1 - module Webhook - class Build - require 'travis/api/v1/webhook/build/finished' - - attr_reader :build, :commit, :request, :repository, :options - - def initialize(build, options = {}) - @build = build - @commit = build.commit - @request = build.request - @repository = build.repository - @options = options - end - - private - - def build_url - ["https://#{Travis.config.host}", repository.slug, 'builds', build.id].join('/') - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/webhook/build/finished.rb b/vendor/travis-core/lib/travis/api/v1/webhook/build/finished.rb deleted file mode 100644 index 7c49cd95..00000000 --- a/vendor/travis-core/lib/travis/api/v1/webhook/build/finished.rb +++ /dev/null @@ -1,70 +0,0 @@ -module Travis - module Api - module V1 - module Webhook - class Build - class Finished < Build - require 'travis/api/v1/webhook/build/finished/job' - - include Formats - - def data - data = { - 'id' => build.id, - 'repository' => repository_data, - 'number' => build.number, - 'config' => build.obfuscated_config.stringify_keys, - 'status' => build.result, - 'result' => build.result, - 'status_message' => result_message, - 'result_message' => result_message, - 'started_at' => format_date(build.started_at), - 'finished_at' => format_date(build.finished_at), - 'duration' => build.duration, - 'build_url' => build_url, - 'commit_id' => commit.id, - 'commit' => commit.commit, - 'base_commit' => request.base_commit, - 'head_commit' => request.head_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, - 'matrix' => build.matrix.map { |job| Job.new(job, options).data }, - 'type' => build.event_type, - 'state' => build.state.to_s, - 'pull_request' => build.pull_request?, - 'pull_request_number' => build.pull_request_number, - 'pull_request_title' => build.pull_request_title, - 'tag' => request.tag_name - } - - if commit.pull_request? - data['pull_request_number'] = commit.pull_request_number - end - - data - end - - def repository_data - { - 'id' => repository.id, - 'name' => repository.name, - 'owner_name' => repository.owner_name, - 'url' => repository.url - } - end - - def result_message - @result_message ||= ::Build::ResultMessage.new(build).short - end - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v1/webhook/build/finished/job.rb b/vendor/travis-core/lib/travis/api/v1/webhook/build/finished/job.rb deleted file mode 100644 index bf0493cc..00000000 --- a/vendor/travis-core/lib/travis/api/v1/webhook/build/finished/job.rb +++ /dev/null @@ -1,50 +0,0 @@ -module Travis - module Api - module V1 - module Webhook - class Build - class Finished < Build - class Job - include Formats - - attr_reader :job, :commit, :options - - def initialize(job, options = {}) - @job = job - @commit = job.commit - @options = options - end - - def data - data = { - 'id' => job.id, - 'repository_id' => job.repository_id, - 'parent_id' => job.source_id, - 'number' => job.number, - 'state' => job.finished? ? 'finished' : job.state.to_s, - 'config' => job.obfuscated_config, - 'status' => job.result, - 'result' => job.result, - '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, - 'allow_failure' => job.allow_failure - } - data['log'] = job.log_content || '' if options[:include_logs] - data['started_at'] = format_date(job.started_at) if job.started? - data['finished_at'] = format_date(job.finished_at) if job.finished? - data - end - end - end - end - end - end - end -end diff --git a/vendor/travis-core/lib/travis/api/v2.rb b/vendor/travis-core/lib/travis/api/v2.rb deleted file mode 100644 index e70b19f4..00000000 --- a/vendor/travis-core/lib/travis/api/v2.rb +++ /dev/null @@ -1,7 +0,0 @@ -module Travis - module Api - module V2 - end - end -end - diff --git a/vendor/travis-core/lib/travis/event/handler.rb b/vendor/travis-core/lib/travis/event/handler.rb index 177c41ab..9930fd34 100644 --- a/vendor/travis-core/lib/travis/event/handler.rb +++ b/vendor/travis-core/lib/travis/event/handler.rb @@ -3,9 +3,9 @@ require 'travis/support/logging' require 'travis/support/instrumentation' require 'travis/support/exceptions/handling' -require 'travis/api' require 'travis/event/config' require 'travis/model/build' +require 'travis/api/serialize' module Travis module Event diff --git a/vendor/travis-core/lib/travis/states_cache.rb b/vendor/travis-core/lib/travis/states_cache.rb index 8703b486..145e14c8 100644 --- a/vendor/travis-core/lib/travis/states_cache.rb +++ b/vendor/travis-core/lib/travis/states_cache.rb @@ -1,13 +1,13 @@ require 'dalli' require 'connection_pool' require 'active_support/core_ext/module/delegation' -require 'travis/api' +require 'travis/api/serialize' module Travis class StatesCache class CacheError < StandardError; end - include Travis::Api::Formats + include Travis::Api::Serialize::Formats attr_reader :adapter