Submit social housing lettings and sales data (CORE)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
class BulkUpload::Downloader
|
|
|
|
attr_reader :bulk_upload
|
|
|
|
|
|
|
|
delegate :path, to: :file
|
|
|
|
|
|
|
|
def initialize(bulk_upload:)
|
|
|
|
@bulk_upload = bulk_upload
|
|
|
|
end
|
|
|
|
|
|
|
|
def call
|
|
|
|
download
|
|
|
|
end
|
|
|
|
|
|
|
|
def delete_local_file!
|
|
|
|
file.unlink
|
|
|
|
end
|
|
|
|
|
|
|
|
def presigned_url
|
|
|
|
s3_storage_service.get_presigned_url(bulk_upload.identifier, 60, response_content_disposition: "attachment; filename=#{bulk_upload.filename}")
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def download
|
|
|
|
io = storage_service.get_file_io(bulk_upload.identifier)
|
|
|
|
file.write(io.read)
|
|
|
|
io.close
|
|
|
|
file.close
|
|
|
|
end
|
|
|
|
|
|
|
|
def file
|
|
|
|
@file ||= Tempfile.new
|
|
|
|
end
|
|
|
|
|
|
|
|
def storage_service
|
|
|
|
@storage_service ||= if FeatureToggle.upload_enabled?
|
|
|
|
s3_storage_service
|
|
|
|
else
|
|
|
|
local_disk_storage_service
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def s3_storage_service
|
|
|
|
Storage::S3Service.new(Configuration::EnvConfigurationService.new, ENV["BULK_UPLOAD_BUCKET"])
|
|
|
|
end
|
|
|
|
|
|
|
|
def local_disk_storage_service
|
|
|
|
Storage::LocalDiskService.new
|
|
|
|
end
|
|
|
|
end
|