From 23146fca1878c9f6e90deed6856d3da2c731d513 Mon Sep 17 00:00:00 2001
From: James Lopez <james@jameslopez.es>
Date: Tue, 22 Mar 2016 12:25:28 +0100
Subject: [PATCH] update bitbucket importer

---
 ...808_remove_wrong_import_url_from_projects.rb |  2 +-
 lib/gitlab/bitbucket_import/importer.rb         | 17 ++++++++++++-----
 lib/gitlab/github_import/importer.rb            |  2 +-
 3 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb b/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb
index 8ba68e61c74..4ca245035d3 100644
--- a/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb
+++ b/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb
@@ -71,7 +71,7 @@ class RemoveWrongImportUrlFromProjects < ActiveRecord::Migration
 
   # All bitbucket imports
   def bitbucket_projects_with_wrong_import_url
-    select_all("SELECT p.id, p.import_urlselect_all("SELECT i.id, p.import_url, i.data FROM projects p INNER JOIN project_import_data i ON p.id = i.project_id WHERE p.import_url IS NOT NULL AND p.import_type = 'bitbucket' "), i.data FROM projects p INNER JOIN project_import_data i ON p.id = i.project_id WHERE p.import_url IS NOT NULL AND p.import_type = 'bitbucket' ")
+    select_all("SELECT i.id, p.import_url, i.data FROM projects p INNER JOIN project_import_data i ON p.id = i.project_id WHERE p.import_url IS NOT NULL AND p.import_type = 'bitbucket' ")
   end
 
   def project_import_data(project_id)
diff --git a/lib/gitlab/bitbucket_import/importer.rb b/lib/gitlab/bitbucket_import/importer.rb
index 46e51a4bf6d..36110962e0c 100644
--- a/lib/gitlab/bitbucket_import/importer.rb
+++ b/lib/gitlab/bitbucket_import/importer.rb
@@ -5,11 +5,14 @@ module Gitlab
 
       def initialize(project)
         @project = project
-        import_data = project.import_data.try(:data)
-        bb_session = import_data["bb_session"] if import_data
-        @client = Client.new(bb_session["bitbucket_access_token"],
-                             bb_session["bitbucket_access_token_secret"])
-        @formatter = Gitlab::ImportFormatter.new
+        if import_data_credentials && import_data_credentials['bb_session']
+          token = import_data_credentials['bb_session']['bitbucket_access_token']
+          token_secret = import_data_credentials['bb_session']['bitbucket_access_token_secret']
+          @client = Client.new(token, token_secret)
+          @formatter = Gitlab::ImportFormatter.new
+        else
+          raise Projects::ImportService::Error, "Unable to find project import data credentials for project ID: #{@project.id}"
+        end
       end
 
       def execute
@@ -24,6 +27,10 @@ module Gitlab
 
       private
 
+      def import_data_credentials
+        @import_data_credentials ||= project.import_data.credentials if project.import_data
+      end
+
       def gl_user_id(project, bitbucket_id)
         if bitbucket_id
           user = User.joins(:identities).find_by("identities.extern_uid = ? AND identities.provider = 'bitbucket'", bitbucket_id.to_s)
diff --git a/lib/gitlab/github_import/importer.rb b/lib/gitlab/github_import/importer.rb
index 0b1ed510229..a5d3ab5fcf1 100644
--- a/lib/gitlab/github_import/importer.rb
+++ b/lib/gitlab/github_import/importer.rb
@@ -8,7 +8,7 @@ module Gitlab
       def initialize(project)
         @project = project
         if import_data_credentials
-          @client = Client.new(import_data_credentials[:user])
+          @client = Client.new(import_data_credentials['user'])
           @formatter = Gitlab::ImportFormatter.new
         else
           raise Projects::ImportService::Error, "Unable to find project import data credentials for project ID: #{@project.id}"
-- 
GitLab