58 lines
1.1 KiB
Ruby
58 lines
1.1 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Import
|
||
|
class GithubGroupsController < ApplicationController
|
||
|
include Import::GithubOauth
|
||
|
|
||
|
before_action :provider_auth, only: [:status]
|
||
|
feature_category :importers
|
||
|
|
||
|
PAGE_LENGTH = 25
|
||
|
|
||
|
def status
|
||
|
respond_to do |format|
|
||
|
format.json do
|
||
|
render json: { provider_groups: serialized_provider_groups }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def serialized_provider_groups
|
||
|
Import::GithubOrgSerializer.new.represent(importable_orgs)
|
||
|
end
|
||
|
|
||
|
def importable_orgs
|
||
|
client_orgs.to_a
|
||
|
end
|
||
|
|
||
|
def client_orgs
|
||
|
@client_orgs ||= client.octokit.organizations(nil, pagination_options)
|
||
|
end
|
||
|
|
||
|
def client
|
||
|
@client ||= Gitlab::GithubImport::Client.new(session[access_token_key])
|
||
|
end
|
||
|
|
||
|
def pagination_options
|
||
|
{
|
||
|
page: [1, params[:page].to_i].max,
|
||
|
per_page: PAGE_LENGTH
|
||
|
}
|
||
|
end
|
||
|
|
||
|
def auth_state_key
|
||
|
:"#{provider_name}_auth_state_key"
|
||
|
end
|
||
|
|
||
|
def access_token_key
|
||
|
:"#{provider_name}_access_token"
|
||
|
end
|
||
|
|
||
|
def provider_name
|
||
|
:github
|
||
|
end
|
||
|
end
|
||
|
end
|