defmodule PhilomenaWeb.RecodeParameterPlug do
  def init(opts), do: opts

  def call(conn, [name: name]) do
    fixed_value =
      conn
      |> Map.get(:params)
      |> Map.get(name)
      |> to_string()
      |> URI.encode_www_form()
      |> String.replace("%2B", "+")
      |> String.replace("%25", "%")

    params = Map.put(conn.params, name, fixed_value)

    %{conn | params: params}
  end
end