summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-10-05 10:57:34 +0200
committerRémy Coutable <remy@rymai.me>2017-10-05 11:05:45 +0200
commit7833d3fb29592daa774124dedca692b921e1545c (patch)
tree76b40df374e2bf6567861be4e79bf8cb64801b56
parentf50b95b00790794184243062e3cbc9095b8b839d (diff)
downloadgitlab-ce-7833d3fb29592daa774124dedca692b921e1545c.tar.gz
Improve & simplify GitHub's representation classes
Signed-off-by: Rémy Coutable <remy@rymai.me>
-rw-r--r--lib/github/import.rb4
-rw-r--r--lib/github/representation/branch.rb14
-rw-r--r--lib/github/representation/issue.rb2
-rw-r--r--lib/github/representation/pull_request.rb12
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