Current section
Files
Jump to
Current section
Files
lib/mixpanel/client/state.ex
defmodule Mixpanel.Client.State do
@moduledoc false
@type t :: %__MODULE__{
project_token: Mixpanel.Config.project_token(),
base_url: Mixpanel.Config.base_url(),
http_adapter: Mixpanel.Config.http_adapter(),
name: Mixpanel.Config.name(),
span: nil | Mixpanel.Telemetry.t()
}
@enforce_keys [:project_token, :base_url, :http_adapter, :name]
defstruct @enforce_keys ++ [:span]
@spec new(Mixpanel.Config.options()) :: t()
def new(opts) do
project_token = Keyword.fetch!(opts, :project_token)
base_url = Keyword.fetch!(opts, :base_url)
http_adapter = Keyword.fetch!(opts, :http_adapter)
name = Keyword.fetch!(opts, :name)
%__MODULE__{
project_token: project_token,
base_url: base_url,
http_adapter: http_adapter,
name: name
}
end
@spec attach_span(t(), Mixpanel.Telemetry.t()) :: t()
def attach_span(state, span) do
%__MODULE__{state | span: span}
end
end