TeslaKeys.Middleware.Case (tesla_keys v0.3.0)
Tesla middleware for case conversion of request and response body keys.
This middleware will do the case conversion of body keys using the functions defined in the options before sending the request and after receiving the response.
examples
Examples
defmodule MyClient do
use Tesla
plug TeslaKeys.Middleware.Case # use defaults
# or
plug TeslaKeys.Middleware.Case, encoder: &Recase.to_camel/1, serializer: &Recase.Enumerable.convert_keys/2
# or
plug TeslaKeys.Middleware.Case, encoder: &String.upcase/1, serializer: &serializer/2
defp serializer(data, fun) when is_map(data), do: Map.new(data, fn {key, value} -> {then(key, fun), value} end)
defp serializer(data, fun) when is_list(data), do: Enum.map(data, &serializer(&1, fun))
defp serializer(data, _fun), do: data
end
options
Options
:serializer
- serializer function with arity 2, receives the body data as the first parameter and the:encoder
or:decoder
option as the second parameter, (defaults to&Recase.Enumerable.convert_keys/2
):encoder
- encoding function, e.g&Recase.to_camel/1
,&Recase.to_pascal/1
(defaults to&Recase.to_camel/1
):decoder
- decoding function (defaults to&Recase.to_snake/1
)