41 lines
897 B
Elixir
41 lines
897 B
Elixir
defmodule NullaWeb.ActivityJSON do
|
|
alias Nulla.Activities.Activity
|
|
|
|
@doc """
|
|
Renders a list of activities.
|
|
"""
|
|
def index(%{activities: activities}) do
|
|
%{data: for(activity <- activities, do: data(activity))}
|
|
end
|
|
|
|
@doc """
|
|
Renders a single activity.
|
|
"""
|
|
def show(%{activity: activity}) do
|
|
%{data: data(activity)}
|
|
end
|
|
|
|
defp data(%Activity{} = activity) do
|
|
%{
|
|
id: activity.id,
|
|
ap_id: activity.ap_id,
|
|
type: activity.type,
|
|
actor: activity.actor,
|
|
object: activity.object,
|
|
to: activity.to,
|
|
cc: activity.cc
|
|
}
|
|
end
|
|
|
|
def activitypub(%Activity{} = activity) do
|
|
Jason.OrderedObject.new(
|
|
"@context": "https://www.w3.org/ns/activitystreams",
|
|
id: activity.ap_id,
|
|
type: activity.type,
|
|
actor: activity.actor,
|
|
object: activity.object,
|
|
to: activity.to,
|
|
cc: activity.cc
|
|
)
|
|
end
|
|
end
|