BitBuckpet importer. Refactoring. Iteration 2

This commit is contained in:
Valery Sizov 2016-12-07 14:00:06 +02:00
parent 67b7637e5d
commit b12d654183
7 changed files with 18 additions and 20 deletions

View file

@ -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

View file

@ -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)

View file

@ -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)

View file

@ -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

View file

@ -5,6 +5,10 @@ module Bitbucket
@raw = raw
end
def self.decorate(entries)
entries.map { |entry| new(entry)}
end
private
attr_reader :raw

View file

@ -1,9 +0,0 @@
module Bitbucket
module Representation
class Url < Representation::Base
def to_s
raw.dig('links', 'self', 'href')
end
end
end
end

View file

@ -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