defmodule LastFm.Scrobble do @moduledoc false defstruct [:track, :artist, :timestamp, :album, :album_artist, :mbid] @type t :: %__MODULE__{ track: String.t(), artist: String.t(), timestamp: integer(), album: String.t() | nil, album_artist: String.t() | nil, mbid: String.t() | nil } @spec encode(t()) :: map() def encode(scrobble) do scrobble |> Map.from_struct() |> Map.reject(fn {_key, value} -> is_nil(value) end) end end