diff options
author | Egor Kislitsyn <egor@kislitsyn.com> | 2020-05-04 21:46:25 +0400 |
---|---|---|
committer | Egor Kislitsyn <egor@kislitsyn.com> | 2020-05-04 21:46:25 +0400 |
commit | 4b9ab67aa8bdf7fdf7390080932fee2e5879a5e4 (patch) | |
tree | dcb428f846c4d53cbb1e09bf918d0e31bac85607 | |
parent | bfbff7d82673d6128a18e73dcc91f70ee669c2ac (diff) | |
download | pleroma-4b9ab67aa8bdf7fdf7390080932fee2e5879a5e4.tar.gz |
Ignore unexpected ENUM values in query string
-rw-r--r-- | lib/pleroma/web/api_spec/cast_and_validate.ex | 11 |
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 |