X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fuploaders%2Flocal.ex;h=2994bcd51b5e2048b4a6e90c7fd90cee5c63888a;hb=91236c60c7aa266c1e874ebdd2aa44becfc6709b;hp=7e5d7a59bf746d1c278522b0c0288ec7ed9370bf;hpb=709816a0f891d6c26c43b54577a3b727c1fe4af6;p=akkoma diff --git a/lib/pleroma/uploaders/local.ex b/lib/pleroma/uploaders/local.ex index 7e5d7a59b..2994bcd51 100644 --- a/lib/pleroma/uploaders/local.ex +++ b/lib/pleroma/uploaders/local.ex @@ -1,44 +1,32 @@ defmodule Pleroma.Uploaders.Local do - def put_file(name, uuid, file, content_type) do + @behaviour Pleroma.Uploaders.Uploader - upload_path = get_upload_path(uuid, should_dedupe) - url_path = get_url(name, uuid, should_dedupe) - - File.mkdir_p!(upload_folder) + def get_file(_) do + {:ok, {:static_dir, upload_path()}} + end - result_file = Path.join(upload_folder, name) + def put_file(upload) do + {local_path, file} = + case Enum.reverse(String.split(upload.path, "/", trim: true)) do + [file] -> + {upload_path(), file} - if File.exists?(result_file) do - File.rm!(file.path) - else - File.cp!(file.path, result_file) - end - - url_path - end + [file | folders] -> + path = Path.join([upload_path()] ++ Enum.reverse(folders)) + File.mkdir_p!(path) + {path, file} + end - def upload_path do - settings = Application.get_env(:pleroma, Pleroma.Uploaders.Local) - Keyword.fetch!(settings, :uploads) - end + result_file = Path.join(local_path, file) - defp get_upload_path(uuid, should_dedupe) do - if should_dedupe do - upload_path() - else - Path.join(upload_path(), uuid) + unless File.exists?(result_file) do + File.cp!(upload.tempfile, result_file) end - end - defp get_url(name, uuid, should_dedupe) do - if should_dedupe do - url_for(:cow_uri.urlencode(name)) - else - url_for(Path.join(uuid, :cow_uri.urlencode(name))) - end + :ok end - defp url_for(file) do - "#{Web.base_url()}/media/#{file}" + def upload_path do + Pleroma.Config.get!([__MODULE__, :uploads]) end end