Skip to main content

lib/http/event_source/event.ex

defmodule HTTP.EventSource.Event.Open do
  @moduledoc """
  Browser-compatible EventSource open event.
  """

  defstruct target: nil, type: "open"

  @type t :: %__MODULE__{target: HTTP.EventSource.t() | nil, type: String.t()}
end

defmodule HTTP.EventSource.Event.Message do
  @moduledoc """
  Browser-compatible EventSource message event.
  """

  defstruct target: nil, type: "message", data: "", origin: "", last_event_id: ""

  @type t :: %__MODULE__{
          target: HTTP.EventSource.t() | nil,
          type: String.t(),
          data: String.t(),
          origin: String.t(),
          last_event_id: String.t()
        }
end

defmodule HTTP.EventSource.Event.Error do
  @moduledoc """
  Browser-compatible EventSource error event.
  """

  defstruct target: nil, type: "error", reason: nil

  @type t :: %__MODULE__{
          target: HTTP.EventSource.t() | nil,
          type: String.t(),
          reason: term()
        }
end