Class: BulkImports::Common::Pipelines::WikiPipeline

Inherits:
Object
  • Object
show all
Includes:
Pipeline
Defined in:
lib/bulk_imports/common/pipelines/wiki_pipeline.rb

Constant Summary

Constants included from Pipeline

Pipeline::CACHE_KEY_EXPIRATION, Pipeline::EMPTY_EXPORT_STATUS_TIMEOUT, Pipeline::ExpiredError, Pipeline::FailedError, Pipeline::NDJSON_EXPORT_TIMEOUT, Pipeline::NotAllowedError

Constants included from Pipeline::Runner

Pipeline::Runner::MarkedAsFailedError

Instance Method Summary collapse

Methods included from Pipeline

#current_user, #import_export_config, #initialize, #portable, #tracker

Methods included from Pipeline::Runner

#run

Instance Method Details

#extractObject



9
10
11
12
13
# File 'lib/bulk_imports/common/pipelines/wiki_pipeline.rb', line 9

def extract(*)
  url = url_from_parent_path(context.entity.source_full_path) if source_wiki_exists?

  BulkImports::Pipeline::ExtractedData.new(data: { url: url })
end

#load(context, data) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/bulk_imports/common/pipelines/wiki_pipeline.rb', line 19

def load(context, data)
  return unless data&.dig(:url)

  wiki = context.portable.wiki
  url = data[:url].sub("://", "://oauth2:#{context.configuration.access_token}@")

  Gitlab::UrlBlocker.validate!(url, schemes: %w[http https], allow_local_network: allow_local_requests?, allow_localhost: allow_local_requests?)

  wiki.create_wiki_repository
  wiki.repository.fetch_as_mirror(url)
end

#transform(_, data) ⇒ Object



15
16
17
# File 'lib/bulk_imports/common/pipelines/wiki_pipeline.rb', line 15

def transform(_, data)
  data&.slice(:url)
end