defmodule Pleroma.Web.ActivityPub.ObjectView do
  use Pleroma.Web, :view

  def render("object.json", %{object: object}) do
    base = %{
      "@context" => [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1",
        %{
          "manuallyApprovesFollowers" => "as:manuallyApprovesFollowers",
          "sensitive" => "as:sensitive",
          "Hashtag" => "as:Hashtag",
          "ostatus" => "http://ostatus.org#",
          "atomUri" => "ostatus:atomUri",
          "inReplyToAtomUri" => "ostatus:inReplyToAtomUri",
          "conversation" => "ostatus:conversation",
          "toot" => "http://joinmastodon.org/ns#",
          "Emoji" => "toot:Emoji"
        }
      ]
    }

    additional = Map.take(object.data, ["id", "to", "cc", "actor", "content", "summary", "type"])
    |> Map.put("attributedTo", object.data["actor"])
    Map.merge(base, additional)
  end
end