From 2d7c79ecf6155ff512c8cbc7010a0099d0a912ac Mon Sep 17 00:00:00 2001 From: Kat <54268893+kosiakkatrina@users.noreply.github.com> Date: Tue, 22 Oct 2024 08:49:39 +0100 Subject: [PATCH] Add content type to the files --- app/services/collection_resources_service.rb | 3 ++- app/services/storage/local_disk_service.rb | 2 +- app/services/storage/s3_service.rb | 21 +++++++++++++------ .../collection_resources_service_spec.rb | 2 +- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/app/services/collection_resources_service.rb b/app/services/collection_resources_service.rb index 81ab08254..82247f7a0 100644 --- a/app/services/collection_resources_service.rb +++ b/app/services/collection_resources_service.rb @@ -24,6 +24,7 @@ class CollectionResourcesService end def upload_collection_resource(filename, file) - @storage_service.write_file(filename, file) + content_type = MiniMime.lookup_by_filename(filename)&.content_type + @storage_service.write_file(filename, file, content_type:) end end diff --git a/app/services/storage/local_disk_service.rb b/app/services/storage/local_disk_service.rb index bb5825340..ad3cc9608 100644 --- a/app/services/storage/local_disk_service.rb +++ b/app/services/storage/local_disk_service.rb @@ -19,7 +19,7 @@ module Storage File.open(path, "r") end - def write_file(filename, data) + def write_file(filename, data, _content_type: nil) path = Rails.root.join("tmp/storage", filename) FileUtils.mkdir_p(path.dirname) diff --git a/app/services/storage/s3_service.rb b/app/services/storage/s3_service.rb index 88199c0a0..2e8daa719 100644 --- a/app/services/storage/s3_service.rb +++ b/app/services/storage/s3_service.rb @@ -36,12 +36,21 @@ module Storage .body.read end - def write_file(file_name, data) - @client.put_object( - body: data, - bucket: @configuration.bucket_name, - key: file_name, - ) + def write_file(file_name, data, content_type: nil) + if content_type.nil? + @client.put_object( + body: data, + bucket: @configuration.bucket_name, + key: file_name, + ) + else + @client.put_object( + body: data, + bucket: @configuration.bucket_name, + key: file_name, + content_type:, + ) + end end def get_file_metadata(file_name) diff --git a/spec/services/collection_resources_service_spec.rb b/spec/services/collection_resources_service_spec.rb index 3786b70c9..602e36c38 100644 --- a/spec/services/collection_resources_service_spec.rb +++ b/spec/services/collection_resources_service_spec.rb @@ -12,7 +12,7 @@ describe CollectionResourcesService do end it "calls write_file on S3 service" do - expect(storage_service).to receive(:write_file).with("2025_26_lettings_paper_form.pdf", some_file) + expect(storage_service).to receive(:write_file).with("2025_26_lettings_paper_form.pdf", some_file, content_type: "application/pdf") service.upload_collection_resource("2025_26_lettings_paper_form.pdf", some_file) end end