defmodule NullaWeb.ActivityPub.OutboxJSON do @doc """ Renders an outbox. """ def index(actor, total) do Jason.OrderedObject.new( "@context": "https://www.w3.org/ns/activitystreams", id: actor.outbox, type: "OrderedCollection", totalItems: total, first: "#{actor.outbox}?page=true", last: "#{actor.outbox}?min_id=0&page=true" ) end def show(actor, activities, max_id, min_id) do Jason.OrderedObject.new( "@context": [ "https://www.w3.org/ns/activitystreams", Jason.OrderedObject.new( sensitive: "as:sensitive", Hashtag: "as:Hashtag" ) ], id: "#{actor.outbox}?page=true", type: "OrderedCollectionPage", next: "#{actor.outbox}?max_id=#{max_id}&page=true", prev: "#{actor.outbox}?min_id=#{min_id}&page=true", partOf: actor.outbox, orderedItems: Enum.map(activities, &data/1) ) end defp data(activity) do Jason.OrderedObject.new( id: activity.ap_id, type: activity.type, actor: activity.actor, object: activity.object, to: activity.to, cc: activity.cc ) end end