diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub_controller.ex | 14 | ||||
| -rw-r--r-- | lib/pleroma/web/ostatus/ostatus_controller.ex | 18 | 
2 files changed, 22 insertions, 10 deletions
| diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 738e4ba33..a9c0401bc 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -1,15 +1,23 @@  defmodule Pleroma.Web.ActivityPub.ActivityPubController do    use Pleroma.Web, :controller -  alias Pleroma.{User, Repo} -  alias Pleroma.Web.ActivityPub.UserView +  alias Pleroma.{User, Repo, Object} +  alias Pleroma.Web.ActivityPub.{ObjectView, UserView}    alias Pleroma.Web.ActivityPub.ActivityPub    def user(conn, %{"nickname" => nickname}) do -    with %User{} = user <- User.get_cached_by_nickname(nickname) do +    with %User{} = user <- User.get_cached_by_nickname(nickname), +         {:ok, user} <- Pleroma.Web.WebFinger.ensure_keys_present(user) do        json(conn, UserView.render("user.json", %{user: user}))      end    end +  def object(conn, %{"uuid" => uuid}) do +    with ap_id <- o_status_url(conn, :object, uuid), +         %Object{} = object <- Object.get_cached_by_ap_id(ap_id) do +      json(conn, ObjectView.render("object.json", %{object: object})) +    end +  end +    def inbox(conn, params) do      {:ok, activity} = ActivityPub.insert(params, false)      json(conn, "ok") diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex index 778495a3e..e5f99c66c 100644 --- a/lib/pleroma/web/ostatus/ostatus_controller.ex +++ b/lib/pleroma/web/ostatus/ostatus_controller.ex @@ -66,13 +66,17 @@ defmodule Pleroma.Web.OStatus.OStatusController do      |> send_resp(200, "")    end -  def object(conn, %{"uuid" => uuid}) do -    with id <- o_status_url(conn, :object, uuid), -         %Activity{} = activity <- Activity.get_create_activity_by_object_ap_id(id), -         %User{} = user <- User.get_cached_by_ap_id(activity.data["actor"]) do -      case get_format(conn) do -        "html" -> redirect(conn, to: "/notice/#{activity.id}") -        _ -> represent_activity(conn, activity, user) +  def object(conn, %{"uuid" => uuid} = params) do +    if get_format(conn) == "activity+json" do +      ActivityPubController.object(conn, params) +    else +      with id <- o_status_url(conn, :object, uuid), +           %Activity{} = activity <- Activity.get_create_activity_by_object_ap_id(id), +             %User{} = user <- User.get_cached_by_ap_id(activity.data["actor"]) do +        case get_format(conn) do +          "html" -> redirect(conn, to: "/notice/#{activity.id}") +          _ -> represent_activity(conn, activity, user) +        end        end      end    end | 
