X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Fostatus%2Fostatus_controller.ex;h=27ec24f576b939cac7ae777a469c0e4c3cacba7f;hb=8902942128e3aee814c215d700e2eaee21b491e9;hp=09d1b1110906673f36047bc2aa1cc7d3c36023f8;hpb=13440a80e1e30141f0f0466ff351bd6f9c148228;p=akkoma diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex index 09d1b1110..27ec24f57 100644 --- a/lib/pleroma/web/ostatus/ostatus_controller.ex +++ b/lib/pleroma/web/ostatus/ostatus_controller.ex @@ -1,7 +1,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do use Pleroma.Web, :controller - alias Pleroma.{User, Activity} + alias Pleroma.{User, Activity, Object} alias Pleroma.Web.OStatus.{FeedRepresenter, ActivityRepresenter} alias Pleroma.Repo alias Pleroma.Web.{OStatus, Federator} @@ -10,6 +10,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do alias Pleroma.Web.ActivityPub.ActivityPubController alias Pleroma.Web.ActivityPub.ActivityPub + plug(Pleroma.Web.FederatingPlug when action in [:salmon_incoming]) action_fallback(:errors) def feed_redirect(conn, %{"nickname" => nickname}) do @@ -133,9 +134,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do %User{} = user <- User.get_cached_by_ap_id(activity.data["actor"]) do case format = get_format(conn) do "html" -> - conn - |> put_resp_content_type("text/html") - |> send_file(200, "priv/static/index.html") + serve_static_with_meta(conn, activity) _ -> represent_activity(conn, format, activity, user) @@ -152,10 +151,30 @@ defmodule Pleroma.Web.OStatus.OStatusController do end end - defp represent_activity(conn, "activity+json", activity, user) do + defp serve_static_with_meta(conn, activity) do + {:ok, index_content } = File.read(Application.app_dir(:pleroma, "priv/static/index.html")) + links = OStatus.metadata(request_url(conn)) + response = String.replace(index_content, "", links) + conn + |> put_resp_content_type("text/html") + |> send_resp(200, response) + end + + defp represent_activity( + conn, + "activity+json", + %Activity{data: %{"type" => "Create"}} = activity, + _user + ) do + object = Object.normalize(activity.data["object"]) + conn |> put_resp_header("content-type", "application/activity+json") - |> json(ObjectView.render("object.json", %{object: activity})) + |> json(ObjectView.render("object.json", %{object: object})) + end + + defp represent_activity(_conn, "activity+json", _, _) do + {:error, :not_found} end defp represent_activity(conn, _, activity, user) do