From 7833d3fb29592daa774124dedca692b921e1545c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Coutable?= Date: Thu, 5 Oct 2017 10:57:34 +0200 Subject: [PATCH] Improve & simplify GitHub's representation classes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rémy Coutable --- lib/github/import.rb | 4 ++-- lib/github/representation/branch.rb | 14 ++++++-------- lib/github/representation/issue.rb | 2 +- lib/github/representation/pull_request.rb | 12 ++++++------ 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/lib/github/import.rb b/lib/github/import.rb index 853f419d44e..55f8387f27a 100644 --- a/lib/github/import.rb +++ b/lib/github/import.rb @@ -211,7 +211,7 @@ module Github # for both features, like manipulating assignees, labels # and milestones, are provided within the Issues API. if representation.pull_request? - return unless representation.labels? || representation.has_comments? + return unless representation.labels? || representation.comments? merge_request = MergeRequest.find_by!(target_project_id: project.id, iid: representation.iid) @@ -248,7 +248,7 @@ module Github end def fetch_comments_conditionally(issuable, representation) - if representation.has_comments? + if representation.comments? comments_url = "/repos/#{repo}/issues/#{issuable.iid}/comments" fetch_comments(issuable, :comment, comments_url) end diff --git a/lib/github/representation/branch.rb b/lib/github/representation/branch.rb index 25b42994ab7..0087a3d3c4f 100644 --- a/lib/github/representation/branch.rb +++ b/lib/github/representation/branch.rb @@ -7,10 +7,14 @@ module Github raw.dig('user', 'login') || 'unknown' end + def repo? + raw['repo'].present? + end + def repo - return @repo if defined?(@repo) + return unless repo? - @repo = Github::Representation::Repo.new(raw['repo']) if raw['repo'].present? + @repo ||= Github::Representation::Repo.new(raw['repo']) end def ref @@ -25,12 +29,6 @@ module Github Commit.truncate_sha(sha) end - def exists? - return @exists if defined?(@exists) - - @exists = repository.branch_exists?(ref) - end - def valid? sha.present? && ref.present? end diff --git a/lib/github/representation/issue.rb b/lib/github/representation/issue.rb index c0a6d349e33..0e595301c58 100644 --- a/lib/github/representation/issue.rb +++ b/lib/github/representation/issue.rb @@ -5,7 +5,7 @@ module Github raw['state'] == 'closed' ? 'closed' : 'opened' end - def has_comments? + def comments? raw['comments'] > 0 end diff --git a/lib/github/representation/pull_request.rb b/lib/github/representation/pull_request.rb index 9baa7af4ffa..0171179bb0f 100644 --- a/lib/github/representation/pull_request.rb +++ b/lib/github/representation/pull_request.rb @@ -1,8 +1,8 @@ module Github module Representation class PullRequest < Representation::Issuable - delegate :user, :repo, :ref, :sha, to: :source_branch, prefix: true - delegate :user, :exists?, :repo, :ref, :sha, :short_sha, to: :target_branch, prefix: true + delegate :sha, to: :source_branch, prefix: true + delegate :sha, to: :target_branch, prefix: true def source_project project @@ -11,7 +11,7 @@ module Github def source_branch_name # Mimic the "user:branch" displayed in the MR widget, # i.e. "Request to merge rymai:add-external-mounts into master" - cross_project? ? "#{source_branch_user}:#{source_branch_ref}" : source_branch_ref + cross_project? ? "#{source_branch.user}:#{source_branch.ref}" : source_branch.ref end def target_project @@ -19,7 +19,7 @@ module Github end def target_branch_name - target_branch_ref + target_branch.ref end def state @@ -62,9 +62,9 @@ module Github end def cross_project? - return true if source_branch_repo.nil? + return true unless source_branch.repo? - source_branch_repo.id != target_branch_repo.id + source_branch.repo.id != target_branch.repo.id end end end -- GitLab