aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex
diff options
context:
space:
mode:
authorMaksim Pechnikov <parallel588@gmail.com>2020-02-10 07:59:52 +0300
committerMaksim Pechnikov <parallel588@gmail.com>2020-02-10 07:59:52 +0300
commitb87533760bb386e85eb8c806e1d242d2b1380971 (patch)
tree5bdd76fba3da0d90a4c81fff6a930f47b15d4f4c /lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex
parentba5e8a644463a19b863e862def80adb6a5a1060b (diff)
parent544bdbfb90d764a5aba8ed07c13b842838d76d73 (diff)
downloadpleroma-b87533760bb386e85eb8c806e1d242d2b1380971.tar.gz
Merge branch 'develop' into issue/1276
Diffstat (limited to 'lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex')
-rw-r--r--lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex
index 0bbf84fd3..a2f6d2287 100644
--- a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex
+++ b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex
@@ -573,11 +573,14 @@ keeping it in cache for #{div(cache_ms, 1000)}s")
assumed to be emojis and stored in the new `pack.json` file.
"""
def import_from_fs(conn, _params) do
- with {:ok, results} <- File.ls(emoji_dir_path()) do
+ emoji_path = emoji_dir_path()
+
+ with {:ok, %{access: :read_write}} <- File.stat(emoji_path),
+ {:ok, results} <- File.ls(emoji_path) do
imported_pack_names =
results
|> Enum.filter(fn file ->
- dir_path = Path.join(emoji_dir_path(), file)
+ dir_path = Path.join(emoji_path, file)
# Find the directories that do NOT have pack.json
File.dir?(dir_path) and not File.exists?(Path.join(dir_path, "pack.json"))
end)
@@ -585,6 +588,11 @@ keeping it in cache for #{div(cache_ms, 1000)}s")
json(conn, imported_pack_names)
else
+ {:ok, %{access: _}} ->
+ conn
+ |> put_status(:internal_server_error)
+ |> json(%{error: "Error: emoji pack directory must be writable"})
+
{:error, _} ->
conn
|> put_status(:internal_server_error)