Commit 98c0eb0f authored by Valery Sizov's avatar Valery Sizov
Browse files

BitBucket refactoring. Iteration 3

parent 22c27a1e70bc
......@@ -6,35 +6,26 @@ def initialize(options = {})
def issues(repo)
path = "/repositories/#{repo}/issues"
paginator = Paginator.new(connection, path, :issue)
Collection.new(paginator)
get_collection(path, :issue)
end
def issue_comments(repo, issue_id)
path = "/repositories/#{repo}/issues/#{issue_id}/comments"
paginator = Paginator.new(connection, path, :comment)
Collection.new(paginator)
get_collection(path, :comment)
end
def pull_requests(repo)
path = "/repositories/#{repo}/pullrequests?state=ALL"
paginator = Paginator.new(connection, path, :pull_request)
Collection.new(paginator)
get_collection(path, :pull_request)
end
def pull_request_comments(repo, pull_request)
path = "/repositories/#{repo}/pullrequests/#{pull_request}/comments"
paginator = Paginator.new(connection, path, :pull_request_comment)
Collection.new(paginator)
get_collection(path, :pull_request_comment)
end
def pull_request_diff(repo, pull_request)
path = "/repositories/#{repo}/pullrequests/#{pull_request}/diff"
connection.get(path)
end
......@@ -45,9 +36,7 @@ def repo(name)
def repos
path = "/repositories/#{user.username}"
paginator = Paginator.new(connection, path, :repo)
Collection.new(paginator)
get_collection(path, :repo)
end
def user
......@@ -60,5 +49,10 @@ def user
private
attr_reader :connection
def get_collection(path, type)
paginator = Paginator.new(connection, path, type)
Collection.new(paginator)
end
end
end
......@@ -3,7 +3,7 @@ class Collection < Enumerator
def initialize(paginator)
super() do |yielder|
loop do
paginator.next.each { |item| yielder << item }
paginator.items.each { |item| yielder << item }
end
end
......
......@@ -11,7 +11,7 @@ def initialize(connection, url, type)
connection.set_default_query_parameters(pagelen: PAGE_LENGTH, sort: :created_on)
end
def next
def items
raise StopIteration unless has_next_page?
@page = fetch_next_page
......
......@@ -50,7 +50,7 @@ def import_issues
if issue.persisted?
client.issue_comments(repo, issue.iid).each do |comment|
# The note can be blank for issue service messages like "Chenged title: ..."
# The note can be blank for issue service messages like "Changed title: ..."
# We would like to import those comments as well but there is no any
# specific parameter that would allow to process them, it's just an empty comment.
# To prevent our importer from just crashing or from creating useless empty comments
......@@ -70,8 +70,8 @@ def import_issues
end
end
end
rescue ActiveRecord::RecordInvalid
nil
rescue ActiveRecord::RecordInvalid => e
Rails.logger.error("Bitbucket importer ERROR in #{project.path_with_namespace}: Couldn't import record properly #{e.message}")
end
def import_pull_requests
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment