defmodule Segment.Context do @derive Jason.Encoder @library_name Mix.Project.get().project[:description] @library_version Mix.Project.get().project[:version] defstruct [ :active, :app, :campaign, :device, :ip, :library, :locale, :location, :network, :os, :page, :referrer, :screen, :timezone, :traits, :userAgent ] def update(context = %__MODULE__{}) do %{context | library: %{name: @library_name, version: @library_version}} end def new do update(%__MODULE__{}) end end