diff --git a/app/lib/meadow/data/file_sets.ex b/app/lib/meadow/data/file_sets.ex index cf66afb59..e00505647 100644 --- a/app/lib/meadow/data/file_sets.ex +++ b/app/lib/meadow/data/file_sets.ex @@ -291,21 +291,15 @@ defmodule Meadow.Data.FileSets do @doc """ Get the pyramid path for a file set """ - def pyramid_uri_for(%FileSet{role: %{id: "P"}}), do: nil - def pyramid_uri_for(%FileSet{role: %{id: "S"}}), do: nil + def pyramid_uri_for(%FileSet{role: %{id: "A"}, core_metadata: %{mime_type: "image/" <> _thing}}), + do: pyramid_uri_from_id(file_set.id) - def pyramid_uri_for(%FileSet{core_metadata: %{mime_type: "video/" <> _thing}}), - do: nil + def pyramid_uri_for(%FileSet{role: %{id: "X"}, core_metadata: %{mime_type: "image/" <> _thing}}), + do: pyramid_uri_from_id(file_set.id) - def pyramid_uri_for(%FileSet{core_metadata: %{mime_type: "audio/" <> _thing}}), - do: nil + def pyramid_uri_for(_), do: nil - def pyramid_uri_for(%FileSet{core_metadata: %{mime_type: "application/pdf"}}), - do: nil - - def pyramid_uri_for(%FileSet{} = file_set), do: pyramid_uri_for(file_set.id) - - def pyramid_uri_for(file_set_id) do + defp pyramid_uri_from_id(file_set_id) do dest_bucket = Config.pyramid_bucket() dest_key = Path.join(["/", Pairtree.pyramid_path(file_set_id)]) diff --git a/app/test/meadow/data/file_sets_test.exs b/app/test/meadow/data/file_sets_test.exs index dc787e274..1bd61e9bd 100644 --- a/app/test/meadow/data/file_sets_test.exs +++ b/app/test/meadow/data/file_sets_test.exs @@ -252,7 +252,17 @@ defmodule Meadow.Data.FileSetsTest do file_set_a = file_set_fixture(role: %{id: "A", scheme: "FILE_SET_ROLE"}) file_set_s = file_set_fixture(role: %{id: "S", scheme: "FILE_SET_ROLE"}) file_set_p = file_set_fixture(role: %{id: "P", scheme: "FILE_SET_ROLE"}) - file_set_x = file_set_fixture(role: %{id: "X", scheme: "FILE_SET_ROLE"}) + file_set_x_image = file_set_fixture(role: %{id: "X", scheme: "FILE_SET_ROLE"}) + + file_set_x_pdf = + file_set_fixture( + role: %{id: "X", scheme: "FILE_SET_ROLE"}, + core_metadata: %{ + mime_type: "application/pdf", + location: "s3://foo", + original_filename: "s3://bar" + } + ) file_set_video = file_set_fixture( @@ -282,8 +292,9 @@ defmodule Meadow.Data.FileSetsTest do assert is_nil(FileSets.pyramid_uri_for(file_set_p)) assert is_nil(FileSets.pyramid_uri_for(file_set_video)) assert is_nil(FileSets.pyramid_uri_for(file_set_audio)) + assert is_nil(FileSets.pyramid_uri_for(file_set_x_pdf)) - with uri <- file_set_x |> FileSets.pyramid_uri_for() |> URI.parse() do + with uri <- file_set_x_image |> FileSets.pyramid_uri_for() |> URI.parse() do assert uri.host == Config.pyramid_bucket() end end