26 lines
554 B
Elixir
26 lines
554 B
Elixir
defmodule Postland.Actors do
|
|
def inbox(actor_id) do
|
|
Map.get(actor(actor_id) || %{}, "inbox")
|
|
end
|
|
|
|
def actor(actor_id) do
|
|
result =
|
|
Cachex.fetch(:main_cache, "actor:#{actor_id}", fn _key ->
|
|
case ActivityPub.fetch_actor(actor_id) do
|
|
{:ok, actor} ->
|
|
{:commit, actor, expire: :timer.seconds(300)}
|
|
|
|
nil ->
|
|
{:commit, nil, expire: :timer.seconds(300)}
|
|
end
|
|
end)
|
|
|
|
case result do
|
|
{:commit, actor} ->
|
|
actor
|
|
|
|
{:ok, actor} ->
|
|
actor
|
|
end
|
|
end
|
|
end
|