summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2020-05-04 21:46:25 +0400
committerEgor Kislitsyn <egor@kislitsyn.com>2020-05-04 21:46:25 +0400
commit4b9ab67aa8bdf7fdf7390080932fee2e5879a5e4 (patch)
treedcb428f846c4d53cbb1e09bf918d0e31bac85607
parentbfbff7d82673d6128a18e73dcc91f70ee669c2ac (diff)
Ignore unexpected ENUM values in query string
-rw-r--r--lib/pleroma/web/api_spec/cast_and_validate.ex11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/pleroma/web/api_spec/cast_and_validate.ex b/lib/pleroma/web/api_spec/cast_and_validate.ex
index cd02403c1..b94517c52 100644
--- a/lib/pleroma/web/api_spec/cast_and_validate.ex
+++ b/lib/pleroma/web/api_spec/cast_and_validate.ex
@@ -110,6 +110,10 @@ defmodule Pleroma.Web.ApiSpec.CastAndValidate do
%{reason: :unexpected_field, name: name, path: [name]}, params ->
Map.delete(params, name)
+ %{reason: :invalid_enum, name: nil, path: path, value: value}, params ->
+ path = path |> Enum.reverse() |> tl() |> Enum.reverse() |> list_items_to_string()
+ update_in(params, path, &List.delete(&1, value))
+
_, params ->
params
end)
@@ -118,4 +122,11 @@ defmodule Pleroma.Web.ApiSpec.CastAndValidate do
OpenApiSpex.cast_and_validate(spec, operation, conn, content_type)
end
end
+
+ defp list_items_to_string(list) do
+ Enum.map(list, fn
+ i when is_atom(i) -> to_string(i)
+ i -> i
+ end)
+ end
end