Add a way to create emoji packs via an endpoint

This commit is contained in:
Ekaterina Vaartis 2019-08-28 19:29:01 +03:00
parent 6b4a144e4d
commit f5131540dc
3 changed files with 56 additions and 0 deletions

View file

@ -211,6 +211,27 @@ keeping it in cache for #{div(cache_ms, 1000)}s")
end end
end end
def create(conn, %{"name" => name}) do
pack_dir = Path.join(@emoji_dir_path, name)
unless File.exists?(pack_dir) do
File.mkdir_p!(pack_dir)
pack_file_p = Path.join(pack_dir, "pack.json")
File.write!(
pack_file_p,
Jason.encode!(%{pack: %{}, files: %{}})
)
conn |> text("ok")
else
conn
|> put_status(:conflict)
|> text("A pack named \"#{name}\" already exists")
end
end
def delete(conn, %{"name" => name}) do def delete(conn, %{"name" => name}) do
pack_dir = Path.join(@emoji_dir_path, name) pack_dir = Path.join(@emoji_dir_path, name)

View file

@ -220,6 +220,7 @@ defmodule Pleroma.Web.Router do
post("/update_file/:pack_name", EmojiAPIController, :update_file) post("/update_file/:pack_name", EmojiAPIController, :update_file)
post("/update_metadata/:pack_name", EmojiAPIController, :update_metadata) post("/update_metadata/:pack_name", EmojiAPIController, :update_metadata)
post("/create/:name", EmojiAPIController, :create)
delete("/delete/:name", EmojiAPIController, :delete) delete("/delete/:name", EmojiAPIController, :delete)
post("/download_from", EmojiAPIController, :download_from) post("/download_from", EmojiAPIController, :download_from)
end end

View file

@ -331,4 +331,38 @@ defmodule Pleroma.Web.EmojiAPI.EmojiAPIControllerTest do
refute File.exists?("#{@emoji_dir_path}/test_pack/blank_url.png") refute File.exists?("#{@emoji_dir_path}/test_pack/blank_url.png")
end end
test "creating and deleting a pack" do
on_exit(fn ->
File.rm_rf!("#{@emoji_dir_path}/test_created")
end)
admin = insert(:user, info: %{is_admin: true})
conn = build_conn() |> assign(:user, admin)
assert conn
|> put_req_header("content-type", "application/json")
|> post(
emoji_api_path(
conn,
:create,
"test_created"
)
)
|> text_response(200) == "ok"
assert File.exists?("#{@emoji_dir_path}/test_created/pack.json")
assert Jason.decode!(File.read!("#{@emoji_dir_path}/test_created/pack.json")) == %{
"pack" => %{},
"files" => %{}
}
assert conn
|> delete(emoji_api_path(conn, :delete, "test_created"))
|> response(200) == "ok"
refute File.exists?("#{@emoji_dir_path}/test_created/pack.json")
end
end end