Add a way to create emoji packs via an endpoint
This commit is contained in:
parent
6b4a144e4d
commit
f5131540dc
|
@ -211,6 +211,27 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} =
|
||||||
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)
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -331,4 +331,38 @@ test "updating pack files" 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
|
||||||
|
|
Loading…
Reference in New Issue