aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancis Dinh <normandy@firemail.cc>2018-06-14 12:12:38 -0400
committerFrancis Dinh <normandy@firemail.cc>2018-06-14 12:16:34 -0400
commit0a95b5594b654dbec73a9e50e340f4975aa3e8e5 (patch)
treef9dabd019d0819951d11f0d0187c1d5726353658
parent678df59d22165ac91d659901fcbefbd6384c6e87 (diff)
downloadpleroma-0a95b5594b654dbec73a9e50e340f4975aa3e8e5.tar.gz
Add missing file extension if file does not have one
-rw-r--r--lib/pleroma/upload.ex29
-rw-r--r--test/upload_test.exs13
2 files changed, 37 insertions, 5 deletions
diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex
index ab4bd16f0..e62ab820a 100644
--- a/lib/pleroma/upload.ex
+++ b/lib/pleroma/upload.ex
@@ -86,10 +86,15 @@ defmodule Pleroma.Upload do
end
defp create_name(uuid, ext, type) do
- if type == "application/octet-stream" do
- String.downcase(Enum.join([uuid, ext], "."))
- else
- String.downcase(Enum.join([uuid, List.last(String.split(type, "/"))], "."))
+ case type do
+ "application/octet-stream" ->
+ String.downcase(Enum.join([uuid, ext], "."))
+
+ "audio/mpeg" ->
+ String.downcase(Enum.join([uuid, "mp3"], "."))
+
+ _ ->
+ String.downcase(Enum.join([uuid, List.last(String.split(type, "/"))], "."))
end
end
@@ -105,7 +110,21 @@ defmodule Pleroma.Upload do
if should_dedupe do
create_name(uuid, List.last(String.split(file.filename, ".")), type)
else
- file.filename
+ unless String.contains?(file.filename, ".") do
+ case type do
+ "image/png" -> file.filename <> ".png"
+ "image/jpeg" -> file.filename <> ".jpg"
+ "image/gif" -> file.filename <> ".gif"
+ "video/webm" -> file.filename <> ".webm"
+ "video/mp4" -> file.filename <> ".mp4"
+ "audio/mpeg" -> file.filename <> ".mp3"
+ "audio/ogg" -> file.filename <> ".ogg"
+ "audio/wav" -> file.filename <> ".wav"
+ _ -> file.filename
+ end
+ else
+ file.filename
+ end
end
end
diff --git a/test/upload_test.exs b/test/upload_test.exs
index 645f10293..09aa5e068 100644
--- a/test/upload_test.exs
+++ b/test/upload_test.exs
@@ -43,5 +43,18 @@ defmodule Pleroma.UploadTest do
data = Upload.store(file, true)
assert hd(data["url"])["mediaType"] == "image/jpeg"
end
+
+ test "adds missing extension" do
+ File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
+
+ file = %Plug.Upload{
+ content_type: "image/jpg",
+ path: Path.absname("test/fixtures/image_tmp.jpg"),
+ filename: "an [image"
+ }
+
+ data = Upload.store(file, false)
+ assert data["name"] == "an [image.jpg"
+ end
end
end