Ignore unexpected ENUM values in query string
authorEgor Kislitsyn <egor@kislitsyn.com>
Mon, 4 May 2020 17:46:25 +0000 (21:46 +0400)
committerEgor Kislitsyn <egor@kislitsyn.com>
Mon, 4 May 2020 17:46:25 +0000 (21:46 +0400)
lib/pleroma/web/api_spec/cast_and_validate.ex

index cd02403c18795f5213ab51b686fe0c5e755ab645..b94517c5234376a812246940072c02beaeeba11a 100644 (file)
@@ -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