diff --git a/lib/open_api_spex/cast_parameters.ex b/lib/open_api_spex/cast_parameters.ex index 1155cb79..9ec6f92b 100644 --- a/lib/open_api_spex/cast_parameters.ex +++ b/lib/open_api_spex/cast_parameters.ex @@ -4,8 +4,6 @@ defmodule OpenApiSpex.CastParameters do alias OpenApiSpex.Cast.Error alias Plug.Conn - @default_parsers %{~r/^application\/.*json.*$/ => OpenApi.json_encoder()} - @spec cast(Plug.Conn.t(), Operation.t(), OpenApi.t(), opts :: [OpenApiSpex.cast_opt()]) :: {:error, [Error.t()]} | {:ok, Conn.t()} def cast(conn, operation, spec, opts \\ []) do @@ -120,7 +118,7 @@ defmodule OpenApiSpex.CastParameters do opts ) do parsers = Map.get(ext || %{}, "x-parameter-content-parsers", %{}) - parsers = Map.merge(@default_parsers, parsers) + parsers = Map.merge(default_parsers(), parsers) conn |> get_params_by_location( @@ -134,6 +132,9 @@ defmodule OpenApiSpex.CastParameters do end end + defp default_parsers, + do: %{~r/^application\/.*json.*$/ => OpenApi.json_encoder()} + defp pre_parse_parameters(%{} = parameters, %{} = parameters_context, parsers) do Enum.reduce_while(parameters, Map.new(), fn {key, value}, acc -> case pre_parse_parameter(value, Map.get(parameters_context, key, %{}), parsers) do diff --git a/lib/open_api_spex/controller_specs.ex b/lib/open_api_spex/controller_specs.ex index 144843e0..d1595579 100644 --- a/lib/open_api_spex/controller_specs.ex +++ b/lib/open_api_spex/controller_specs.ex @@ -386,7 +386,9 @@ defmodule OpenApiSpex.ControllerSpecs do extensions = spec - |> Enum.filter(fn {key, _val} -> is_atom(key) && String.starts_with?(to_string(key), "x-") end) + |> Enum.filter(fn {key, _val} -> + is_atom(key) && String.starts_with?(to_string(key), "x-") + end) |> Map.new(fn {key, value} -> {to_string(key), value} end) %Operation{ diff --git a/test/cast/string_test.exs b/test/cast/string_test.exs index 427c616a..eabb5703 100644 --- a/test/cast/string_test.exs +++ b/test/cast/string_test.exs @@ -27,7 +27,7 @@ defmodule OpenApiSpex.CastStringTest do assert {:error, [error]} = cast(value: "hello", schema: schema) assert error.reason == :invalid_format assert error.value == "hello" - assert error.format == ~r/\d-\d/ + assert error.format.source == "\\d-\\d" end test "string with format (date time)" do diff --git a/test/support/schemas.ex b/test/support/schemas.ex index 65f687fd..0f93748f 100644 --- a/test/support/schemas.ex +++ b/test/support/schemas.ex @@ -186,7 +186,7 @@ defmodule OpenApiSpexTest.Schemas do type: :object, properties: %{ id: %Schema{type: :integer, description: "User ID"}, - name: %Schema{type: :string, description: "User name", pattern: ~r/[a-zA-Z][a-zA-Z0-9_]+/}, + name: %Schema{type: :string, description: "User name", pattern: "[a-zA-Z][a-zA-Z0-9_]+"}, email: %Schema{type: :string, description: "Email address", format: :email}, password: %Schema{type: :string, description: "Login password", writeOnly: true}, age: %Schema{type: :integer, description: "Age"},