TeslaKeys.Middleware.Case (tesla_keys v0.1.3)
Tesla middleware for converting the request and response body keys. This middleware will convert all the keys from the request body using the function defined in the options before executing the request, and will convert all the keys from the response body using the function defined in options after getting the response
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.atomize_keys/2
# or
plug TeslaKeys.Middleware.Case, encoder: &String.upcase/1, serializer: &serializer/2
defp serializer(data, encoder) when is_map(data), do: Map.new(data, fn {key, value} -> {then(key, encoder), value} end)
defp serializer(data, encoder) when is_list(data), do: Enum.map(data, &serializer(&1, encoder))
defp serializer(data, _encoder), do: data
end
Options
:serializer
- serializer function with arity 2, receives the data as the first parameter and the:encoder
as the second parameter, (defaults to&Recase.Enumerable.stringify_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
)