defmodule JWT.Coding do def encode!(map) do map |> Jason.encode!() |> Base.url_encode64(padding: false) end def decode!(binary, opts \\ []) do binary |> Base.url_decode64!(padding: false) |> Jason.decode!(opts) end def decode(binary, opts \\ []) do with {:ok, url_decoded} <- Base.url_decode64(binary, padding: false), {:ok, json_decoded} <- Jason.decode(url_decoded, opts) do {:ok, json_decoded} else :error -> {:error, JWT.DecodeError} jason_error -> jason_error end end end