Skip to content

Commit

Permalink
Refactor pyramid_uri_for logic based on PR comments
Browse files Browse the repository at this point in the history
  • Loading branch information
kdid committed Feb 6, 2025
1 parent 96867b7 commit 5aa6c3b
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 14 deletions.
18 changes: 6 additions & 12 deletions app/lib/meadow/data/file_sets.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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)])
Expand Down
15 changes: 13 additions & 2 deletions app/test/meadow/data/file_sets_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 5aa6c3b

Please sign in to comment.