lib/inngest/cache_body_reader.ex
defmodule Inngest.CacheBodyReader do
@moduledoc """
A custom Plug parser for caching raw request body
"""
@spec read_body(Plug.Conn.t(), keyword()) :: {:ok, binary(), Plug.Conn.t()}
def read_body(conn, opts) do
{:ok, body, conn} = Plug.Conn.read_body(conn, opts)
conn = update_in(conn.private[:raw_body], &[body | &1 || []])
{:ok, body, conn}
end
def read_cached_body(conn) do
conn.private[:raw_body]
end
end