Current section
Files
Jump to
Current section
Files
lib/uex.ex
defmodule Uex do
@enforce_keys [:source]
defstruct [:source, :file_path, :file_name, :tag, meta: [], opts: []]
@type t :: %__MODULE__{
source: any(),
opts: keyword(),
file_path: String.t(),
file_name: String.t(),
meta: keyword()
}
def new(source, opts \\ [])
def new(source, opts) do
name = Keyword.get(opts, :file_name)
tag = Keyword.get(opts, :tag, :original)
opts = Keyword.get(opts, :opts, [])
%__MODULE__{source: source, file_name: name, tag: tag, opts: opts}
end
def get_extension(%__MODULE__{meta: meta}) do
Keyword.get(meta, :extension)
end
def set_extension(%__MODULE__{meta: meta} = uex, value) do
%__MODULE__{uex | meta: Keyword.put(meta, :extension, value)}
end
def get_content_type(%__MODULE__{meta: meta}) do
Keyword.get(meta, :content_type)
end
def set_content_type(%__MODULE__{meta: meta} = uex, value) do
%__MODULE__{uex | meta: Keyword.put(meta, :content_type, value)}
end
def get_file_size(%__MODULE__{meta: meta}) do
Keyword.get(meta, :file_size)
end
def set_file_size(%__MODULE__{meta: meta} = uex, value) do
%__MODULE__{uex | meta: Keyword.put(meta, :file_size, value)}
end
def get_upload_directory(%__MODULE__{opts: opts}) do
Keyword.get(opts, :upload_directory)
end
def set_upload_directory(%__MODULE__{opts: opts} = uex, value) do
%__MODULE__{uex | opts: Keyword.put(opts, :upload_directory, value)}
end
def default_opts_keys() do
[:upload_directory]
end
end