25 lines
780 B
Elixir
25 lines
780 B
Elixir
defmodule Clacks.Inbox do
|
|
alias Clacks.{Repo, Activity, Object, Actor}
|
|
|
|
def handle_create(%{"type" => "Create", "object" => object, "actor" => actor} = activity) do
|
|
changeset = Object.changeset(%Object{}, %{data: object})
|
|
{:ok, _object} = Repo.insert(changeset)
|
|
|
|
changeset =
|
|
Activity.changeset(%Activity{}, %{
|
|
data: activity,
|
|
local: false,
|
|
actor: actor
|
|
})
|
|
|
|
{:ok, _activity} = Repo.insert(changeset)
|
|
end
|
|
|
|
def handle_follow(%{"type" => "Follow", "object" => followed_id, "actor" => follower})
|
|
when is_binary(followed_id) do
|
|
followed = Actor.get_by_ap_id(followed_id)
|
|
changeset = Actor.changeset(followed, %{followers: [follower | followed.followers]})
|
|
{:ok, _followed} = Repo.update(changeset)
|
|
end
|
|
end
|