summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLain Iwakura <lain@soykaf.club>2017-12-11 18:21:33 +0100
committerLain Iwakura <lain@soykaf.club>2017-12-11 18:21:33 +0100
commit64330d9455684e417d014cb6f21ce7f52620b9db (patch)
treef7201a49df2ad9870f0867bd3f75e335090661be
parenta89a613e4e070e09e0dd5d040060ace622aac6aa (diff)
downloadpleroma-64330d9455684e417d014cb6f21ce7f52620b9db.tar.gz
pleroma-64330d9455684e417d014cb6f21ce7f52620b9db.zip
ActivityPub: Add object routes / controller.
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub_controller.ex14
-rw-r--r--lib/pleroma/web/ostatus/ostatus_controller.ex18
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