summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorValery Sizov <valery@gitlab.com>2015-02-05 16:57:27 -0800
committerValery Sizov <valery@gitlab.com>2015-02-05 21:48:21 -0800
commitb3c90dd51418d0c41df4ccd57d9480ea44b35eec (patch)
tree48135878c66cfdca4a5c1c996cd8e210bf32e157 /lib
parent85c2cb2a1980d494aef198c59e4f3859b2668ba3 (diff)
downloadgitlab-ce-b3c90dd51418d0c41df4ccd57d9480ea44b35eec.tar.gz
GitHub importer refactoring
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)