OpenAPI CastAndValidate: filter out empty params
authorrinpatch <rinpatch@sdf.org>
Tue, 29 Sep 2020 18:49:04 +0000 (21:49 +0300)
committerrinpatch <rinpatch@sdf.org>
Tue, 29 Sep 2020 18:52:16 +0000 (21:52 +0300)
Closes #2198

CHANGELOG.md
lib/pleroma/web/api_spec/cast_and_validate.ex

index 80fbc078dcb41bab2275c7f8b118b60d1b2a5b75..983ddd62859e6ae7c9710366118d9b76e5fdc25b 100644 (file)
@@ -37,6 +37,11 @@ switched to a new configuration mechanism, however it was not officially removed
 - Add documented-but-missing chat pagination.
 - Allow sending out emails again.
 
+## Unreleased (Patch)
+
+### Changed
+- API: Empty parameter values for integer parameters are now ignored in non-strict validaton mode.
+
 ## [2.1.2] - 2020-09-17
 
 ### Security
index fbfc27d6f7655cd3efe38556c9e3c706421a6081..6d1a7ebbcc0a329f31d34f10e34e33574b8c98e2 100644 (file)
@@ -115,6 +115,10 @@ defmodule Pleroma.Web.ApiSpec.CastAndValidate do
             %{reason: :unexpected_field, name: name, path: [name]}, params ->
               Map.delete(params, name)
 
+            # Filter out empty params
+            %{reason: :invalid_type, path: [name_atom], value: ""}, params ->
+              Map.delete(params, to_string(name_atom))
+
             %{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))