- def maybe_fix_user_url(data) do
- if is_map(data["url"]) do
- Map.put(data, "url", data["url"]["href"])
+ def maybe_fix_user_url(%{"url" => url} = data) when is_map(url) do
+ Map.put(data, "url", url["href"])
+ end
+
+ def maybe_fix_user_url(data), do: data
+
+ def maybe_fix_user_object(data), do: maybe_fix_user_url(data)
+
+ defp maybe_add_context_from_object(%{"context" => context} = data) when is_binary(context),
+ do: {:ok, data}
+
+ defp maybe_add_context_from_object(%{"object" => object} = data) when is_binary(object) do
+ if object = Object.normalize(object) do
+ data =
+ data
+ |> Map.put("context", object.data["context"])
+
+ {:ok, data}
+ else
+ {:error, "No context on referenced object"}
+ end
+ end
+
+ defp maybe_add_context_from_object(_) do
+ {:error, "No referenced object"}
+ end
+
+ defp maybe_add_recipients_from_object(%{"object" => object} = data) do
+ to = data["to"] || []
+ cc = data["cc"] || []
+
+ if to == [] && cc == [] do
+ if object = Object.normalize(object) do
+ data =
+ data
+ |> Map.put("to", [object.data["actor"]])
+ |> Map.put("cc", cc)
+
+ {:ok, data}
+ else
+ {:error, "No actor on referenced object"}
+ end