returning partial chain
This commit is contained in:
parent
081d1d3f48
commit
3c29f4f957
@ -278,6 +278,8 @@ defmodule Pleroma.ConfigDB do
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp do_convert({:partial_chain, entity}), do: %{"tuple" => [":partial_chain", inspect(entity)]}
|
||||||
|
|
||||||
defp do_convert(entity) when is_tuple(entity) do
|
defp do_convert(entity) when is_tuple(entity) do
|
||||||
value =
|
value =
|
||||||
entity
|
entity
|
||||||
@ -321,6 +323,15 @@ defmodule Pleroma.ConfigDB do
|
|||||||
{:proxy_url, {do_transform_string(type), parse_host(host), port}}
|
{:proxy_url, {do_transform_string(type), parse_host(host), port}}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp do_transform(%{"tuple" => [":partial_chain", entity]}) do
|
||||||
|
{partial_chain, []} =
|
||||||
|
entity
|
||||||
|
|> String.replace(~r/[^\w|^{:,[|^,|^[|^\]^}|^\/|^\.|^"]^\s/, "")
|
||||||
|
|> Code.eval_string()
|
||||||
|
|
||||||
|
{:partial_chain, partial_chain}
|
||||||
|
end
|
||||||
|
|
||||||
defp do_transform(%{"tuple" => entity}) do
|
defp do_transform(%{"tuple" => entity}) do
|
||||||
Enum.reduce(entity, {}, fn val, acc -> Tuple.append(acc, do_transform(val)) end)
|
Enum.reduce(entity, {}, fn val, acc -> Tuple.append(acc, do_transform(val)) end)
|
||||||
end
|
end
|
||||||
|
@ -476,6 +476,14 @@ defmodule Pleroma.ConfigDBTest do
|
|||||||
assert ConfigDB.from_binary(binary) == [key: "value"]
|
assert ConfigDB.from_binary(binary) == [key: "value"]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "keyword with partial_chain key" do
|
||||||
|
binary =
|
||||||
|
ConfigDB.transform([%{"tuple" => [":partial_chain", "&:hackney_connect.partial_chain/1"]}])
|
||||||
|
|
||||||
|
assert binary == :erlang.term_to_binary(partial_chain: &:hackney_connect.partial_chain/1)
|
||||||
|
assert ConfigDB.from_binary(binary) == [partial_chain: &:hackney_connect.partial_chain/1]
|
||||||
|
end
|
||||||
|
|
||||||
test "keyword" do
|
test "keyword" do
|
||||||
binary =
|
binary =
|
||||||
ConfigDB.transform([
|
ConfigDB.transform([
|
||||||
|
@ -2509,6 +2509,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
|
|||||||
%{"tuple" => [":seconds_valid", 60]},
|
%{"tuple" => [":seconds_valid", 60]},
|
||||||
%{"tuple" => [":path", ""]},
|
%{"tuple" => [":path", ""]},
|
||||||
%{"tuple" => [":key1", nil]},
|
%{"tuple" => [":key1", nil]},
|
||||||
|
%{"tuple" => [":partial_chain", "&:hackney_connect.partial_chain/1"]},
|
||||||
%{"tuple" => [":regex1", "~r/https:\/\/example.com/"]},
|
%{"tuple" => [":regex1", "~r/https:\/\/example.com/"]},
|
||||||
%{"tuple" => [":regex2", "~r/https:\/\/example.com/u"]},
|
%{"tuple" => [":regex2", "~r/https:\/\/example.com/u"]},
|
||||||
%{"tuple" => [":regex3", "~r/https:\/\/example.com/i"]},
|
%{"tuple" => [":regex3", "~r/https:\/\/example.com/i"]},
|
||||||
@ -2532,6 +2533,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
|
|||||||
%{"tuple" => [":seconds_valid", 60]},
|
%{"tuple" => [":seconds_valid", 60]},
|
||||||
%{"tuple" => [":path", ""]},
|
%{"tuple" => [":path", ""]},
|
||||||
%{"tuple" => [":key1", nil]},
|
%{"tuple" => [":key1", nil]},
|
||||||
|
%{"tuple" => [":partial_chain", "&:hackney_connect.partial_chain/1"]},
|
||||||
%{"tuple" => [":regex1", "~r/https:\\/\\/example.com/"]},
|
%{"tuple" => [":regex1", "~r/https:\\/\\/example.com/"]},
|
||||||
%{"tuple" => [":regex2", "~r/https:\\/\\/example.com/u"]},
|
%{"tuple" => [":regex2", "~r/https:\\/\\/example.com/u"]},
|
||||||
%{"tuple" => [":regex3", "~r/https:\\/\\/example.com/i"]},
|
%{"tuple" => [":regex3", "~r/https:\\/\\/example.com/i"]},
|
||||||
@ -2544,6 +2546,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
|
|||||||
":seconds_valid",
|
":seconds_valid",
|
||||||
":path",
|
":path",
|
||||||
":key1",
|
":key1",
|
||||||
|
":partial_chain",
|
||||||
":regex1",
|
":regex1",
|
||||||
":regex2",
|
":regex2",
|
||||||
":regex3",
|
":regex3",
|
||||||
|
Loading…
Reference in New Issue
Block a user