defmodule Mobilizon.Federation.ActivityStream.Converter.Tombstone do @moduledoc """ Comment converter. This module allows to convert Tombstone models to ActivityStreams data """ alias Mobilizon.Tombstone, as: TombstoneModel alias Mobilizon.Federation.ActivityStream.{Converter, Convertible} require Logger @behaviour Converter defimpl Convertible, for: TombstoneModel do alias Mobilizon.Federation.ActivityStream.Converter.Tombstone, as: TombstoneConverter defdelegate model_to_as(comment), to: TombstoneConverter end @doc """ Make an AS tombstone object from an existing `Tombstone` structure. """ @impl Converter @spec model_to_as(TombstoneModel.t()) :: map def model_to_as(%TombstoneModel{} = tombstone) do %{ "type" => "Tombstone", "id" => tombstone.uri, "actor" => if(tombstone.actor, do: tombstone.actor.url, else: nil), "deleted" => tombstone.inserted_at } end @doc """ Converting an Tombstone to an object makes no sense, nevertheless… """ @impl Converter @spec as_to_model_data(map) :: map def as_to_model_data(object), do: object end