Current section

Files

Jump to

lib/guard.ex

defmodule Membrane.RTC.Engine.Endpoint.Recording.Guard do
@moduledoc false
alias Membrane.RTC.Engine.Endpoint.Recording.Storage
@type storage :: {module(), opts :: any()}
@spec close_recording([storage()], String.t()) :: [storage()]
def close_recording(stores, recording_id) do
case List.keytake(stores, Storage.File, 0) do
nil ->
stores
{file_store, other_stores} ->
valid_stores = close_stores(file_store, other_stores, recording_id)
[file_store | valid_stores]
end
end
defp close_stores({file_storage, file_opts}, stores, recording_id) do
files = file_storage.list_files(file_opts)
Enum.filter(stores, fn {module, opts} ->
module.on_close(files, recording_id, opts) == :ok
end)
end
end