plug_rest v0.5.0 PlugRest.Conn

Helper functions for parsing Plug connection request headers

Summary

Functions

Parses request date header as Erlang date/time tuples

Parses an entity tag header into a list of etags

Parses media range header into a structure that can be sorted by quality

Parses media-type header as a {type, subtype, params} tuple

Parses other accept headers into types that can be sorted by quality

Reads the dynamic segment values from a rest resource path

Types

conn :: %Plug.Conn{adapter: term, assigns: term, before_send: term, body_params: term, cookies: term, halted: term, host: term, method: term, owner: term, params: term, path_info: term, peer: term, port: term, private: term, query_params: term, query_string: term, remote_ip: term, req_cookies: term, req_headers: term, request_path: term, resp_body: term, resp_cookies: term, resp_headers: term, scheme: term, script_name: term, secret_key_base: term, state: term, status: term}
params :: any
priority_type :: {media_type, float, map}
quality_type :: {String.t, float}

Functions

parse_accept_header(list)

Specs

parse_accept_header([]) :: []
parse_accept_header([String.t, ...]) :: [media_type]
parse_date_header(conn, header)

Specs

parse_date_header(conn, String.t) ::
  [] |
  :calendar.time

Parses request date header as Erlang date/time tuples

Possible headers are:

  • if-modified-since
  • if-unmodified-since

Examples

iex > PlugRest.Conn.parse_date_header(conn, "if-modified-since")
{{2016, 7, 17}, {19, 54, 31}}
parse_entity_tag_header(conn, header)

Specs

parse_entity_tag_header(conn, header) :: list

Parses an entity tag header into a list of etags

Possible headers are:

  • if-match
  • if-none-match

Examples

iex > PlugRest.Conn.parse_entity_tag_header(conn, "if-none-match")
[{:strong, "xyzzy"}]
parse_media_range_header(conn, header)

Specs

parse_media_range_header(conn, header) :: [priority_type]

Parses media range header into a structure that can be sorted by quality

Possible headers are:

  • accept

Examples

iex > PlugRest.Conn.parse_media_range_header(conn, "accept")
[{{"text", "html", %{}}, 1.0, %{}}]
parse_media_type_header(conn, header)

Specs

parse_media_type_header(conn, String.t) :: media_type

Parses media-type header as a {type, subtype, params} tuple

Possible headers are:

  • content-type

Examples

iex > PlugRest.Conn.parse_media_type_header(conn, "content-type")
{"application", "json", %{}}
parse_quality_header(conn, header)

Specs

parse_quality_header(conn, String.t) :: [quality_type]

Parses other accept headers into types that can be sorted by quality

Possible headers are:

  • accept-language
  • accept-charset

Examples

iex > PlugRest.Conn.parse_quality_header(conn, "accept-language")
[{"da", 1.0}, {"en-gb", 0.8}, {"en", 0.7}]
read_path_params(conn, opts \\ [])

Specs

read_path_params(conn, Keyword.t) :: %{optional(binary) => binary}

Reads the dynamic segment values from a rest resource path

#Examples

iex > PlugRest.Conn.read_path_params(conn)
%{"id" => 123}