Plug v1.8.0 Plug.Conn.Adapter behaviour View Source
Specification of the connection adapter API implemented by webservers
Link to this section Summary
Callbacks
Sends a chunk in the chunked response
Returns the HTTP protocol and its version
Returns peer information such as the address, port and ssl cert
Send an informational response to the client
Push a resource to the client
Reads the request body
Sends the given status, headers as the beginning of a chunked response to the client
Sends the given status, headers and file as a response back to the client
Sends the given status, headers and body as a response back to the client
Link to this section Types
http_protocol()
View Source
http_protocol() :: :"HTTP/1" | :"HTTP/1.1" | :"HTTP/2" | atom()
http_protocol() :: :"HTTP/1" | :"HTTP/1.1" | :"HTTP/2" | atom()
payload()
View Source
payload() :: term()
payload() :: term()
peer_data()
View Source
peer_data() :: %{
address: :inet.ip_address(),
port: :inet.port_number(),
ssl_cert: binary() | nil
}
peer_data() :: %{ address: :inet.ip_address(), port: :inet.port_number(), ssl_cert: binary() | nil }
Link to this section Callbacks
chunk(payload, arg1)
View Source
chunk(payload(), Plug.Conn.status()) ::
:ok | {:ok, sent_body :: binary(), payload()} | {:error, term()}
chunk(payload(), Plug.Conn.status()) :: :ok | {:ok, sent_body :: binary(), payload()} | {:error, term()}
Sends a chunk in the chunked response.
If the request has method "HEAD"
, the adapter should
not send the response to the client.
Webservers are advised to return :ok
and not modify
any further state for each chunk. However, the test
implementation returns the actual body and payload so
it can be used during testing.
get_http_protocol(payload)
View Source
get_http_protocol(payload()) :: http_protocol()
get_http_protocol(payload()) :: http_protocol()
Returns the HTTP protocol and its version.
get_peer_data(payload) View Source
Returns peer information such as the address, port and ssl cert.
inform(payload, arg1, headers)
View Source
inform(payload(), Plug.Conn.status(), headers :: Keyword.t()) ::
:ok | {:error, term()}
inform(payload(), Plug.Conn.status(), headers :: Keyword.t()) :: :ok | {:error, term()}
Send an informational response to the client.
If the adapter does not support inform, then {:error, :not_supported}
should be returned.
push(payload, path, headers) View Source
Push a resource to the client.
If the adapter does not support server push then {:error, :not_supported}
should be returned.
read_req_body(payload, options) View Source
Reads the request body.
Read the docs in Plug.Conn.read_body/2
for the supported
options and expected behaviour.
send_chunked(payload, arg1, arg2)
View Source
send_chunked(payload(), Plug.Conn.status(), Plug.Conn.headers()) ::
{:ok, sent_body :: binary() | nil, payload()}
send_chunked(payload(), Plug.Conn.status(), Plug.Conn.headers()) :: {:ok, sent_body :: binary() | nil, payload()}
Sends the given status, headers as the beginning of a chunked response to the client.
Webservers are advised to return nil
as the sent_body,
as the body can no longer be manipulated. However, the
test implementation returns the actual body so it can
be used during testing.
send_file(payload, arg1, arg2, file, offset, length)
View Source
send_file(
payload(),
Plug.Conn.status(),
Plug.Conn.headers(),
file :: binary(),
offset :: integer(),
length :: integer() | :all
) :: {:ok, sent_body :: binary() | nil, payload()}
send_file( payload(), Plug.Conn.status(), Plug.Conn.headers(), file :: binary(), offset :: integer(), length :: integer() | :all ) :: {:ok, sent_body :: binary() | nil, payload()}
Sends the given status, headers and file as a response back to the client.
If the request has method "HEAD"
, the adapter should
not send the response to the client.
Webservers are advised to return nil
as the sent_body,
as the body can no longer be manipulated. However, the
test implementation returns the actual body so it can
be used during testing.
send_resp(payload, arg1, arg2, arg3)
View Source
send_resp(payload(), Plug.Conn.status(), Plug.Conn.headers(), Plug.Conn.body()) ::
{:ok, sent_body :: binary() | nil, payload()}
send_resp(payload(), Plug.Conn.status(), Plug.Conn.headers(), Plug.Conn.body()) :: {:ok, sent_body :: binary() | nil, payload()}
Sends the given status, headers and body as a response back to the client.
If the request has method "HEAD"
, the adapter should
not send the response to the client.
Webservers are advised to return nil
as the sent_body,
as the body can no longer be manipulated. However, the
test implementation returns the actual body so it can
be used during testing.