Current section
Files
Jump to
Current section
Files
lib/file_store/error.ex
defmodule FileStore.Error do
defexception [:reason, :key, :action]
@common_posix ~w(eacces eexist enoent enospc enotdir)a
@impl true
def message(%{action: action, key: nil, reason: reason}) do
"could not #{action}: #{format(reason)}"
end
def message(%{action: action, reason: reason, key: key}) do
"could not #{action} #{inspect(key)}: #{format(reason)}"
end
@doc false
def format(reason) when reason in @common_posix do
reason |> :file.format_error() |> IO.iodata_to_binary()
end
def format(reason) do
inspect(reason)
end
end
defmodule FileStore.UploadError do
defexception [:reason, :path, :key]
@impl true
def message(%{reason: reason, path: path, key: key}) do
reason = FileStore.Error.format(reason)
"could not upload file #{inspect(path)} to key #{inspect(key)}: #{reason}"
end
end
defmodule FileStore.DownloadError do
defexception [:reason, :path, :key]
@impl true
def message(%{reason: reason, path: path, key: key}) do
reason = FileStore.Error.format(reason)
"could not download key #{inspect(key)} to file #{inspect(path)}: #{reason}"
end
end
defmodule FileStore.CopyError do
defexception [:reason, :src, :dest]
@impl true
def message(%{reason: reason, src: src, dest: dest}) do
reason = FileStore.Error.format(reason)
"could not copy #{inspect(src)} to #{inspect(dest)}: #{reason}"
end
end
defmodule FileStore.RenameError do
defexception [:reason, :src, :dest]
@impl true
def message(%{reason: reason, src: src, dest: dest}) do
reason = FileStore.Error.format(reason)
"could not rename #{inspect(src)} to #{inspect(dest)}: #{reason}"
end
end