Refactoring Bitbucket importer to use the new OAuth2 client

This commit is contained in:
Douglas Barbosa Alexandre 2016-08-22 16:13:56 -03:00 committed by Stan Hu
parent 3c756b83ef
commit 317b020932
1 changed files with 30 additions and 38 deletions

View File

@ -5,18 +5,14 @@ module Gitlab
def initialize(project)
@project = project
@client = Client.from_project(@project)
@client = Bitbucket::Client.new(project.import_data.credentials)
@formatter = Gitlab::ImportFormatter.new
end
def execute
import_issues if has_issues?
import_issues
true
rescue ActiveRecord::RecordInvalid => e
raise Projects::ImportService::Error.new, e.message
ensure
Gitlab::BitbucketImport::KeyDeleter.new(project).execute
end
private
@ -30,44 +26,40 @@ module Gitlab
end
end
def identifier
project.import_source
end
def has_issues?
client.project(identifier)["has_issues"]
def repo
@repo ||= client.repo(project.import_source)
end
def import_issues
issues = client.issues(identifier)
return unless repo.has_issues?
issues.each do |issue|
body = ''
reporter = nil
author = 'Anonymous'
client.issues(repo).each do |issue|
description = @formatter.author_line(issue.author)
description += issue.description
if issue["reported_by"] && issue["reported_by"]["username"]
reporter = issue["reported_by"]["username"]
author = reporter
end
issue = project.issues.create(
iid: issue.iid,
title: issue.title,
description: description,
state: issue.state,
author_id: gl_user_id(project, issue.author),
created_at: issue.created_at,
updated_at: issue.updated_at
)
body = @formatter.author_line(author)
body += issue["content"]
if issue.persisted?
client.issue_comments(repo, issue.iid).each do |comment|
note = @formatter.author_line(comment.author)
note += comment.note
comments = client.issue_comments(identifier, issue["local_id"])
if comments.any?
body += @formatter.comments_header
end
comments.each do |comment|
author = 'Anonymous'
if comment["author_info"] && comment["author_info"]["username"]
author = comment["author_info"]["username"]
issue.notes.create!(
project: project,
note: note,
author_id: gl_user_id(project, comment.author),
created_at: comment.created_at,
updated_at: comment.updated_at
)
end
body += @formatter.comment(author, comment["utc_created_on"], comment["content"])
end
project.issues.create!(
@ -77,8 +69,8 @@ module Gitlab
author_id: gitlab_user_id(project, reporter)
)
end
rescue ActiveRecord::RecordInvalid => e
raise Projects::ImportService::Error, e.message
rescue ActiveRecord::RecordInvalid
nil
end
end
end