From b69b4c30c280047890a504216fd875cf7f2f0db0 Mon Sep 17 00:00:00 2001 From: Phil Lee Date: Thu, 15 Dec 2022 10:20:00 +0000 Subject: [PATCH] use local disk for bulk upload for dev env - this saves the need to connect to S3 to play with bulk upload in dev environment --- .../bulk_upload_lettings/upload_your_file.rb | 13 +++++++--- app/services/bulk_upload/downloader.rb | 14 +++++++++- app/services/storage/local_disk_service.rb | 26 +++++++++++++++++++ 3 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 app/services/storage/local_disk_service.rb diff --git a/app/models/forms/bulk_upload_lettings/upload_your_file.rb b/app/models/forms/bulk_upload_lettings/upload_your_file.rb index da2947f53..3c5868a8d 100644 --- a/app/models/forms/bulk_upload_lettings/upload_your_file.rb +++ b/app/models/forms/bulk_upload_lettings/upload_your_file.rb @@ -41,9 +41,7 @@ module Forms filename: file.original_filename, ) - if upload_enabled? - storage_service.write_file(bulk_upload.identifier, File.read(file.path)) - end + storage_service.write_file(bulk_upload.identifier, File.read(file.path)) true end @@ -55,7 +53,14 @@ module Forms end def storage_service - @storage_service ||= Storage::S3Service.new(Configuration::PaasConfigurationService.new, ENV["CSV_DOWNLOAD_PAAS_INSTANCE"]) + @storage_service ||= if upload_enabled? + Storage::S3Service.new( + Configuration::PaasConfigurationService.new, + ENV["CSV_DOWNLOAD_PAAS_INSTANCE"], + ) + else + Storage::LocalDiskService.new + end end def validate_file_is_csv diff --git a/app/services/bulk_upload/downloader.rb b/app/services/bulk_upload/downloader.rb index 9d40ef5b9..000622e84 100644 --- a/app/services/bulk_upload/downloader.rb +++ b/app/services/bulk_upload/downloader.rb @@ -25,9 +25,21 @@ private end def storage_service - @storage_service ||= Storage::S3Service.new( + @storage_service ||= if FeatureToggle.upload_enabled? + s3_storage_service + else + local_disk_storage_service + end + end + + def s3_storage_service + Storage::S3Service.new( Configuration::PaasConfigurationService.new, ENV["CSV_DOWNLOAD_PAAS_INSTANCE"], ) end + + def local_disk_storage_service + Storage::LocalDiskService.new + end end diff --git a/app/services/storage/local_disk_service.rb b/app/services/storage/local_disk_service.rb new file mode 100644 index 000000000..f0cc358d1 --- /dev/null +++ b/app/services/storage/local_disk_service.rb @@ -0,0 +1,26 @@ +require "fileutils" + +module Storage + class LocalDiskService < StorageService + def list_files(folder = "/") + path = Rails.root.join("tmp/storage", folder) + Dir.entries(path) + end + + def get_file_io(filename) + path = Rails.root.join("tmp/storage", filename) + + File.open(path, "r") + end + + def write_file(filename, data) + path = Rails.root.join("tmp/storage", filename) + + FileUtils.mkdir_p(path.dirname) + + File.open(path, "w") do |f| + f.write data + end + end + end +end