Plug.Conn.Adapter

Plug.Conn.Adapter behaviour

Specification of the connection adapter API implemented by webservers

Summary

Callbacks

chunk(payload, arg1)

Sends a chunk in the chunked response

parse_req_multipart(payload, options, list)

Parses a multipart request

read_req_body(payload, options)

Reads the request body

send_chunked(payload, arg1, arg2)

Sends the given status, headers as the beginning of a chunked response to the client

send_file(payload, arg1, arg2, file, offset, length)

Sends the given status, headers and file as a response back to the client

send_resp(payload, arg1, arg2, arg3)

Sends the given status, headers and body as a response back to the client

Callbacks

chunk(payload, arg1)

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.

parse_req_multipart(payload, options, list)

parse_req_multipart(payload, options :: Keyword.t, (... -> any)) ::
  {:ok, Plug.Conn.params, payload} |
  {:more, Plug.Conn.params, payload}

Parses a multipart request.

This function receives the payload, the body limit and a callback. When parsing each multipart segment, the parser should invoke the given fallback passing the headers for that segment, before consuming the body. The callback will return one of the following values:

  • {:binary, name} - the current segment must be treated as a regular binary value with the given name
  • {:file, name, file, upload} - the current segment is a file upload with name and contents should be written to the given file
  • :skip - this multipart segment should be skipped

This function may return a :ok or :more tuple. The first one is returned when there is no more multipart data to be processed.

For the supported options, please read Plug.Conn.read_body/2 docs.

read_req_body(payload, options)

read_req_body(payload, options :: Keyword.t) ::
  {:ok, data :: binary, payload} |
  {:more, data :: binary, payload} |
  {:error, term}

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)

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)

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)

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.

© 2013 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/plug/Plug.Conn.Adapter.html

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部