BitBuckpet importer. Refactoring. Iteration 2
This commit is contained in:
parent
67b7637e5d
commit
b12d654183
7 changed files with 18 additions and 20 deletions
|
@ -62,7 +62,7 @@ class Import::BitbucketController < Import::BaseController
|
|||
end
|
||||
|
||||
def provider
|
||||
Gitlab.config.omniauth.providers.find { |provider| provider.name == 'bitbucket' }
|
||||
Gitlab::OAuth::Provider.config_for('bitbucket')
|
||||
end
|
||||
|
||||
def options
|
||||
|
|
|
@ -13,11 +13,9 @@ module Bitbucket
|
|||
|
||||
def issue_comments(repo, issue_id)
|
||||
path = "/repositories/#{repo}/issues/#{issue_id}/comments"
|
||||
paginator = Paginator.new(connection, path, :url)
|
||||
paginator = Paginator.new(connection, path, :comment)
|
||||
|
||||
Collection.new(paginator).map do |comment_url|
|
||||
Representation::Comment.new(connection.get(comment_url.to_s))
|
||||
end
|
||||
Collection.new(paginator)
|
||||
end
|
||||
|
||||
def pull_requests(repo)
|
||||
|
|
|
@ -18,14 +18,12 @@ module Bitbucket
|
|||
private
|
||||
|
||||
def parse_attrs(raw)
|
||||
attrs = %w(size page pagelen next previous)
|
||||
attrs.map { |attr| { attr.to_sym => raw[attr] } }.reduce(&:merge)
|
||||
raw.slice(*%w(size page pagelen next previous)).symbolize_keys
|
||||
end
|
||||
|
||||
def parse_values(raw, bitbucket_rep_class)
|
||||
return [] unless raw['values'] && raw['values'].is_a?(Array)
|
||||
|
||||
raw['values'].map { |hash| bitbucket_rep_class.new(hash) }
|
||||
bitbucket_rep_class.decorate(raw['values'])
|
||||
end
|
||||
|
||||
def representation_class(type)
|
||||
|
|
|
@ -26,12 +26,12 @@ module Bitbucket
|
|||
page.nil? || page.next?
|
||||
end
|
||||
|
||||
def page_url
|
||||
def next_url
|
||||
page.nil? ? url : page.next
|
||||
end
|
||||
|
||||
def fetch_next_page
|
||||
parsed_response = connection.get(page_url)
|
||||
parsed_response = connection.get(next_url)
|
||||
Page.new(parsed_response, type)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -5,6 +5,10 @@ module Bitbucket
|
|||
@raw = raw
|
||||
end
|
||||
|
||||
def self.decorate(entries)
|
||||
entries.map { |entry| new(entry)}
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
attr_reader :raw
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
module Bitbucket
|
||||
module Representation
|
||||
class Url < Representation::Base
|
||||
def to_s
|
||||
raw.dig('links', 'self', 'href')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -50,6 +50,13 @@ module Gitlab
|
|||
|
||||
if issue.persisted?
|
||||
client.issue_comments(repo, issue.iid).each do |comment|
|
||||
# The note can be blank for issue service messages like "Chenged 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
|
||||
# we do this check.
|
||||
next unless comment.note.present?
|
||||
|
||||
note = @formatter.author_line(comment.author)
|
||||
note += comment.note
|
||||
|
||||
|
|
Loading…
Reference in a new issue