30 lines
752 B
Ruby
30 lines
752 B
Ruby
# frozen_string_literal: true
|
|
|
|
module BulkImports
|
|
module Groups
|
|
module Extractors
|
|
class SubgroupsExtractor
|
|
def extract(context)
|
|
encoded_parent_path = ERB::Util.url_encode(context.entity.source_full_path)
|
|
|
|
response = http_client(context.configuration)
|
|
.each_page(:get, "groups/#{encoded_parent_path}/subgroups")
|
|
.flat_map(&:itself)
|
|
|
|
BulkImports::Pipeline::ExtractedData.new(data: response)
|
|
end
|
|
|
|
private
|
|
|
|
def http_client(configuration)
|
|
@http_client ||= BulkImports::Clients::HTTP.new(
|
|
url: configuration.url,
|
|
token: configuration.access_token,
|
|
per_page: 100
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|