defmodule Pleroma.Upload do
+ alias Ecto.UUID
+ alias Pleroma.Web
def store(%Plug.Upload{} = file) do
- uuid = Ecto.UUID.generate
+ uuid = UUID.generate
upload_folder = Path.join(upload_path(), uuid)
File.mkdir_p!(upload_folder)
result_file = Path.join(upload_folder, file.filename)
def store(%{"img" => "data:image/" <> image_data}) do
parsed = Regex.named_captures(~r/(?<filetype>jpeg|png|gif);base64,(?<data>.*)/, image_data)
data = Base.decode64!(parsed["data"])
- uuid = Ecto.UUID.generate
+ uuid = UUID.generate
upload_folder = Path.join(upload_path(), uuid)
File.mkdir_p!(upload_folder)
filename = Base.encode16(:crypto.hash(:sha256, data)) <> ".#{parsed["filetype"]}"
end
defp upload_path do
- Application.get_env(:pleroma, Pleroma.Upload)
- |> Keyword.fetch!(:uploads)
+ settings = Application.get_env(:pleroma, Pleroma.Upload)
+ Keyword.fetch!(settings, :uploads)
end
defp url_for(file) do
- "#{Pleroma.Web.base_url()}/media/#{file}"
+ "#{Web.base_url()}/media/#{file}"
end
end