Elixir ATProtocol firehose & subscription listener
at main 596 B view raw
1defmodule Drinkup.Options do 2 use TypedStruct 3 4 @default_host "https://bsky.network" 5 6 @type options() :: %{ 7 required(:consumer) => module(), 8 optional(:name) => atom(), 9 optional(:host) => String.t(), 10 optional(:cursor) => pos_integer() 11 } 12 13 typedstruct do 14 field :consumer, module(), enforce: true 15 field :name, atom(), default: Drinkup 16 field :host, String.t(), default: @default_host 17 field :cursor, pos_integer() | nil 18 end 19 20 @spec from(options()) :: t() 21 def from(%{consumer: _} = options), do: struct(__MODULE__, options) 22end