diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/github_import/client.rb | 32 | ||||
-rw-r--r-- | lib/gitlab/github_import/importer.rb | 10 |
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) |