class BulkUpload::Processor attr_reader :bulk_upload def initialize(bulk_upload:) @bulk_upload = bulk_upload end def call download validator.call create_logs if validator.create_logs? ensure downloader.delete_local_file! end private def create_logs log_creator_class.new( bulk_upload:, path: downloader.path, ).call end def log_creator_class case bulk_upload.log_type when "lettings" BulkUpload::Lettings::LogCreator when "sales" BulkUpload::Sales::LogCreator else raise "Log creator not found for #{bulk_upload.log_type}" end end def downloader @downloader ||= BulkUpload::Downloader.new(bulk_upload:) end def download downloader.call end def validator @validator ||= validator_class.new( bulk_upload:, path: downloader.path, ) end def validator_class case bulk_upload.log_type when "lettings" BulkUpload::Lettings::Validator when "sales" BulkUpload::Sales::Validator else raise "Validator not found for #{bulk_upload.log_type}" end end end