defmodule Ewebmachine do
@moduledoc (File.read!("README.md") |>
String.replace(~r/^See the \[generated.*$/m, "") |>
String.replace(~r/^.*Build Status.*$/m, "") |>
String.replace("https://raw.githubusercontent.com/kbrw/ewebmachine/master/doc/", ""))
alias Plug.Conn
@doc """
Set :resp_redirect to `true`
"""
@spec do_redirect(Plug.Conn.t) :: Plug.Conn.t
def do_redirect(conn) do
Conn.put_private(conn, :resp_redirect, true)
end
@doc """
Returns request body from request (requires fetching body first)
"""
@spec req_body(Plug.Conn.t) :: binary
def req_body(conn), do: conn.private[:req_body]
@doc """
Fetch request body
Options:
* max_length: maximum bytes to fetch (default: 1_000_000)
"""
@spec fetch_req_body(Plug.Conn.t, Enumerable.t) :: Plug.Conn.t
def fetch_req_body(conn, opts) do
if conn.private[:req_body] do conn else
{:ok, body, conn} = Conn.read_body(conn, length: (opts[:max_length] || 1_000_000))
Conn.put_private(conn, :req_body, body)
end
end
end