Elixir ATProtocol firehose & subscription listener
at v0.1.0 577 B view raw
1defmodule Drinkup.Event.Identity do 2 @moduledoc """ 3 Struct for identity events from the ATProto Firehose. 4 """ 5 6 use TypedStruct 7 8 typedstruct enforce: true do 9 field :seq, integer() 10 field :did, String.t() 11 field :time, NaiveDateTime.t() 12 field :handle, String.t() | nil 13 end 14 15 @spec from(map()) :: t() 16 def from(%{"seq" => seq, "did" => did, "time" => time} = msg) do 17 handle = Map.get(msg, "handle") 18 time = NaiveDateTime.from_iso8601!(time) 19 20 %__MODULE__{ 21 seq: seq, 22 did: did, 23 time: time, 24 handle: handle 25 } 26 end 27end