Polyjuice Util v0.2.1 Polyjuice.Util.ClientError View Source

Matrix Client API error mapping to Elixir

Link to this section Summary

Link to this section Functions

Link to this macro

deferror(error_name, macro_error \\ nil, macro_additional_fields \\ nil)

View Source (macro)

deferror macro is used to define error mappings.

example:

Defining a mapping to M_FORBIDDEN:

> import Polyjuice.Util.ClientError
> deferror(MForbidden)
> e = MForbidden.new
%MForbidden{additional_fields: nil, errcode: "M_FORBIDDEN", error: nil}
> json_encode(e)
{:ok, "{"errcode":"M_FORBIDDEN"}"}

Defining a mapping to M_LIMIT_EXCEEDED with default message:

> import Polyjuice.Util.ClientError
> deferror(MLimitExceeded, "Too many requests")
> e = MLimitExceeded.new
%MLimitExceeded{
additional_fields: nil,
errcode: "M_LIMIT_EXCEEDED",
error: "Too many requests"
}
> json_encode(e)
{:ok, "{"errcode":"M_LIMIT_EXCEEDED","error":"Too many requests"}"}

Defining a mapping to M_LIMIT_EXCEEDED with additional fields:

> import Polyjuice.Util.ClientError
> deferror(MLimitExceeded, "Too many requests")
> e = MLimitExceeded.new(nil, retry_after_ms: 2000)
%MLimitExceeded{
additional_fields: [retry_after_ms: 2000],
errcode: "M_LIMIT_EXCEEDED",
error: "Too many requests"
}
> json_encode(e)
{:ok,
"{"errcode":"M_LIMIT_EXCEEDED","error":"Too many requests","retry_after_ms":2000}"}
Link to this function

json_encode(entity)

View Source
json_encode(Polyjuice.Util.ClientError.ErrorSpec.t()) ::
  {:ok, String.t()} | {:error, any()}
Link to this function

json_encode_to_iodata(entity)

View Source
json_encode_to_iodata(Polyjuice.Util.ClientError.ErrorSpec.t()) ::
  {:ok, iodata()} | {:error, any()}
Link to this function

json_encode_to_iodata!(entity)

View Source
json_encode_to_iodata!(Polyjuice.Util.ClientError.ErrorSpec.t()) :: iodata()