diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/plugs/static_fe_plug.ex | 14 | ||||
| -rw-r--r-- | lib/pleroma/web/ostatus/ostatus_controller.ex | 64 | ||||
| -rw-r--r-- | lib/pleroma/web/router.ex | 1 | ||||
| -rw-r--r-- | lib/pleroma/web/static_fe/static_fe_controller.ex | 33 | 
4 files changed, 56 insertions, 56 deletions
diff --git a/lib/pleroma/plugs/static_fe_plug.ex b/lib/pleroma/plugs/static_fe_plug.ex new file mode 100644 index 000000000..d3abaf4cc --- /dev/null +++ b/lib/pleroma/plugs/static_fe_plug.ex @@ -0,0 +1,14 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Plugs.StaticFEPlug do +  def init(options), do: options + +  def call(conn, _) do +    case Pleroma.Config.get([:instance, :static_fe], false) do +      true -> Pleroma.Web.StaticFE.StaticFEController.call(conn, :show) +      _ -> conn +    end +  end +end diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex index be275977e..6958519de 100644 --- a/lib/pleroma/web/ostatus/ostatus_controller.ex +++ b/lib/pleroma/web/ostatus/ostatus_controller.ex @@ -76,41 +76,37 @@ defmodule Pleroma.Web.OStatus.OStatusController do    end    def notice(%{assigns: %{format: format}} = conn, %{"id" => id}) do -    if Pleroma.Config.get([:instance, :static_fe], false) do -      Pleroma.Web.StaticFE.StaticFEController.call(conn, :show_notice) -    else -      with {_, %Activity{} = activity} <- {:activity, Activity.get_by_id_with_object(id)}, -           {_, true} <- {:public?, Visibility.is_public?(activity)}, -           %User{} = user <- User.get_cached_by_ap_id(activity.data["actor"]) do -        cond do -          format == "html" && activity.data["type"] == "Create" -> -            %Object{} = object = Object.normalize(activity) - -            RedirectController.redirector_with_meta( -              conn, -              %{ -                activity_id: activity.id, -                object: object, -                url: Router.Helpers.o_status_url(Endpoint, :notice, activity.id), -                user: user -              } -            ) - -          format == "html" -> -            RedirectController.redirector(conn, nil) - -          true -> -            represent_activity(conn, format, activity, user) -        end -      else -        reason when reason in [{:public?, false}, {:activity, nil}] -> -          conn -          |> put_status(404) -          |> RedirectController.redirector(nil, 404) - -        e -> -          e +    with {_, %Activity{} = activity} <- {:activity, Activity.get_by_id_with_object(id)}, +         {_, true} <- {:public?, Visibility.is_public?(activity)}, +         %User{} = user <- User.get_cached_by_ap_id(activity.data["actor"]) do +      cond do +        format == "html" && activity.data["type"] == "Create" -> +          %Object{} = object = Object.normalize(activity) + +          RedirectController.redirector_with_meta( +            conn, +            %{ +              activity_id: activity.id, +              object: object, +              url: Router.Helpers.o_status_url(Endpoint, :notice, activity.id), +              user: user +            } +          ) + +        format == "html" -> +          RedirectController.redirector(conn, nil) + +        true -> +          represent_activity(conn, format, activity, user)        end +    else +      reason when reason in [{:public?, false}, {:activity, nil}] -> +        conn +        |> put_status(404) +        |> RedirectController.redirector(nil, 404) + +      e -> +        e      end    end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 8fb4aec13..ecf5f744c 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -495,6 +495,7 @@ defmodule Pleroma.Web.Router do    pipeline :ostatus do      plug(:accepts, ["html", "xml", "atom", "activity+json", "json"]) +    plug(Pleroma.Plugs.StaticFEPlug)    end    pipeline :oembed do diff --git a/lib/pleroma/web/static_fe/static_fe_controller.ex b/lib/pleroma/web/static_fe/static_fe_controller.ex index 5f69218ce..96e30f317 100644 --- a/lib/pleroma/web/static_fe/static_fe_controller.ex +++ b/lib/pleroma/web/static_fe/static_fe_controller.ex @@ -14,7 +14,6 @@ defmodule Pleroma.Web.StaticFE.StaticFEController do    plug(:put_layout, :static_fe)    plug(:put_view, Pleroma.Web.StaticFE.StaticFEView)    plug(:assign_id) -  action_fallback(:not_found)    defp get_title(%Object{data: %{"name" => name}}) when is_binary(name),      do: name @@ -34,14 +33,15 @@ defmodule Pleroma.Web.StaticFE.StaticFEController do      }    end +  def represent(%Activity{} = activity), do: represent(activity, false) +    def represent(%Activity{object: %Object{data: data}} = activity, selected) do      {:ok, user} = User.get_or_fetch(activity.object.data["actor"])      link = -      if user.local do -        Helpers.o_status_url(Pleroma.Web.Endpoint, :notice, activity) -      else -        data["url"] || data["external_url"] || data["id"] +      case user.local do +        true -> Helpers.o_status_url(Pleroma.Web.Endpoint, :notice, activity) +        _ -> data["url"] || data["external_url"] || data["id"]        end      %{ @@ -57,28 +57,27 @@ defmodule Pleroma.Web.StaticFE.StaticFEController do      }    end -  def show_notice(%{assigns: %{notice_id: notice_id}} = conn, _params) do +  def show(%{assigns: %{notice_id: notice_id}} = conn, _params) do      instance_name = Pleroma.Config.get([:instance, :name], "Pleroma")      activity = Activity.get_by_id_with_object(notice_id)      context = activity.object.data["context"]      activities = ActivityPub.fetch_activities_for_context(context, %{}) -    represented = +    timeline =        for a <- Enum.reverse(activities) do          represent(a, a.object.id == activity.object.id)        end -    render(conn, "conversation.html", %{activities: represented, instance_name: instance_name}) +    render(conn, "conversation.html", %{activities: timeline, instance_name: instance_name})    end -  def show_user(%{assigns: %{username_or_id: username_or_id}} = conn, _params) do +  def show(%{assigns: %{username_or_id: username_or_id}} = conn, _params) do      instance_name = Pleroma.Config.get([:instance, :name], "Pleroma")      %User{} = user = User.get_cached_by_nickname_or_id(username_or_id)      timeline = -      for activity <- ActivityPub.fetch_user_activities(user, nil, %{}) do -        represent(activity, false) -      end +      ActivityPub.fetch_user_activities(user, nil, %{}) +      |> Enum.map(&represent/1)      render(conn, "profile.html", %{user: user, timeline: timeline, instance_name: instance_name})    end @@ -89,15 +88,5 @@ defmodule Pleroma.Web.StaticFE.StaticFEController do    def assign_id(%{path_info: ["users", user_id]} = conn, _opts),      do: assign(conn, :username_or_id, user_id) -  def assign_id(%{path_info: [user_id]} = conn, _opts), -    do: assign(conn, :username_or_id, user_id) -    def assign_id(conn, _opts), do: conn - -  # Fallback for unhandled types -  def not_found(conn, _opts) do -    conn -    |> put_status(404) -    |> text("Not found") -  end  end  | 
