1# frozen_string_literal: true 2module Gitlab 3 module PhabricatorImport 4 module Issues 5 class Importer 6 def initialize(project, after = nil) 7 @project = project 8 @after = after 9 end 10 11 def execute 12 schedule_next_batch 13 14 tasks_response.tasks.each do |task| 15 TaskImporter.new(project, task).execute 16 end 17 end 18 19 private 20 21 attr_reader :project, :after 22 23 def schedule_next_batch 24 return unless tasks_response.pagination.has_next_page? 25 26 Gitlab::PhabricatorImport::ImportTasksWorker 27 .schedule(project.id, tasks_response.pagination.next_page) 28 end 29 30 def tasks_response 31 @tasks_response ||= client.tasks(after: after) 32 end 33 34 def client 35 @client ||= 36 Gitlab::PhabricatorImport::Conduit::Maniphest 37 .new(phabricator_url: project.import_data.data['phabricator_url'], 38 api_token: project.import_data.credentials[:api_token]) 39 end 40 end 41 end 42 end 43end 44