summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/github_import/client.rb32
-rw-r--r--lib/gitlab/github_import/importer.rb10
2 files changed, 32 insertions, 10 deletions
diff --git a/lib/gitlab/github_import/client.rb b/lib/gitlab/github_import/client.rb
index cf43d36c6c3..c9904fe8779 100644
--- a/lib/gitlab/github_import/client.rb
+++ b/lib/gitlab/github_import/client.rb
@@ -1,14 +1,42 @@
module Gitlab
module GithubImport
class Client
- attr_reader :client
+ attr_reader :client, :api
- def initialize
+ def initialize(access_token)
@client = ::OAuth2::Client.new(
config.app_id,
config.app_secret,
github_options
)
+
+ if access_token
+ ::Octokit.auto_paginate = true
+ @api = ::Octokit::Client.new(access_token: access_token)
+ end
+ end
+
+ def authorize_url(redirect_uri)
+ client.auth_code.authorize_url({
+ redirect_uri: redirect_uri,
+ scope: "repo, user, user:email"
+ })
+ end
+
+ def get_token(code)
+ client.auth_code.get_token(code).token
+ end
+
+ def method_missing(method, *args, &block)
+ if api.respond_to?(method)
+ api.send(method, *args, &block)
+ else
+ super(method, *args, &block)
+ end
+ end
+
+ def respond_to?(method)
+ api.respond_to?(method) || super
end
private
diff --git a/lib/gitlab/github_import/importer.rb b/lib/gitlab/github_import/importer.rb
index 1f02ee49b6a..bc2b645b2d9 100644
--- a/lib/gitlab/github_import/importer.rb
+++ b/lib/gitlab/github_import/importer.rb
@@ -1,16 +1,15 @@
module Gitlab
module GithubImport
class Importer
- attr_reader :project
+ attr_reader :project, :client
def initialize(project)
@project = project
+ @client = Client.new(project.creator.github_access_token)
@formatter = Gitlab::ImportFormatter.new
end
def execute
- client = octo_client(project.creator.github_access_token)
-
#Issues && Comments
client.list_issues(project.import_source, state: :all).each do |issue|
if issue.pull_request.nil?
@@ -37,11 +36,6 @@ module Gitlab
private
- def octo_client(access_token)
- ::Octokit.auto_paginate = true
- ::Octokit::Client.new(access_token: access_token)
- end
-
def gl_user_id(project, github_id)
user = User.joins(:identities).
find_by("identities.extern_uid = ? AND identities.provider = 'github'", github_id.to_s)