Trogon.Error.MetadataValue (Trogon.Error v0.8.1)

Copy Markdown View Source

Represents a metadata entry with both value and visibility level.

Each metadata entry in a Trogon error contains not just the value, but also its visibility level which determines who can see this metadata.

Visibility Levels

  • :INTERNAL - Only visible to internal systems and developers (default)
  • :PRIVATE - Visible to authenticated users but not public
  • :PUBLIC - Visible to everyone including end users

Examples

iex> Trogon.Error.MetadataValue.new("secret data", :PRIVATE)
%Trogon.Error.MetadataValue{value: "secret data", visibility: :PRIVATE}

iex> Trogon.Error.MetadataValue.new(123)
%Trogon.Error.MetadataValue{value: "123", visibility: :INTERNAL}

Summary

Types

Raw input format for creating a MetadataValue.

t()

Functions

Creates a MetadataValue with :INTERNAL visibility. See new/2 for explicit visibility.

Creates a MetadataValue with explicit visibility. Non-string values are converted via to_string/1.

Types

raw()

@type raw() :: String.t() | {String.t(), visibility()}

Raw input format for creating a MetadataValue.

  • Simple string: defaults to :INTERNAL visibility

  • Tuple {value, visibility}: explicit visibility control

    "user_id" # => %MetadataValue{value: "user_id", visibility: :INTERNAL} {"secret", :PRIVATE} # => %MetadataValue{value: "secret", visibility: :PRIVATE}

t()

@type t() :: %Trogon.Error.MetadataValue{value: String.t(), visibility: visibility()}

visibility()

@type visibility() :: :INTERNAL | :PRIVATE | :PUBLIC

Functions

new(value)

@spec new(term()) :: t()

Creates a MetadataValue with :INTERNAL visibility. See new/2 for explicit visibility.

Examples

iex> Trogon.Error.MetadataValue.new("secret")
%Trogon.Error.MetadataValue{value: "secret", visibility: :INTERNAL}

new(value, visibility)

@spec new(term(), visibility()) :: t()

Creates a MetadataValue with explicit visibility. Non-string values are converted via to_string/1.

Examples

iex> Trogon.Error.MetadataValue.new("secret", :PRIVATE)
%Trogon.Error.MetadataValue{value: "secret", visibility: :PRIVATE}

iex> Trogon.Error.MetadataValue.new(123, :PUBLIC)
%Trogon.Error.MetadataValue{value: "123", visibility: :PUBLIC}