43 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
module Gitlab
 | 
						|
  module PhabricatorImport
 | 
						|
    module Issues
 | 
						|
      class Importer
 | 
						|
        def initialize(project, after = nil)
 | 
						|
          @project, @after = project, after
 | 
						|
        end
 | 
						|
 | 
						|
        def execute
 | 
						|
          schedule_next_batch
 | 
						|
 | 
						|
          tasks_response.tasks.each do |task|
 | 
						|
            TaskImporter.new(project, task).execute
 | 
						|
          end
 | 
						|
        end
 | 
						|
 | 
						|
        private
 | 
						|
 | 
						|
        attr_reader :project, :after
 | 
						|
 | 
						|
        def schedule_next_batch
 | 
						|
          return unless tasks_response.pagination.has_next_page?
 | 
						|
 | 
						|
          Gitlab::PhabricatorImport::ImportTasksWorker
 | 
						|
            .schedule(project.id, tasks_response.pagination.next_page)
 | 
						|
        end
 | 
						|
 | 
						|
        def tasks_response
 | 
						|
          @tasks_response ||= client.tasks(after: after)
 | 
						|
        end
 | 
						|
 | 
						|
        def client
 | 
						|
          @client ||=
 | 
						|
            Gitlab::PhabricatorImport::Conduit::Maniphest
 | 
						|
              .new(phabricator_url: project.import_data.data['phabricator_url'],
 | 
						|
                   api_token: project.import_data.credentials[:api_token])
 | 
						|
        end
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |