logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 03b7b2fa24127847a764403f5374d5c8f36b7c50
parent: f972966385b51c149cf1fda0a73c835a1a10604e
Author: Roger Braun <roger@rogerbraun.net>
Date:   Fri, 19 May 2017 15:53:02 +0200

Also show activities in OStatus.

Diffstat:

Mlib/pleroma/web/ostatus/ostatus_controller.ex18+++++++++++++++---
Mlib/pleroma/web/router.ex1+
Mtest/web/ostatus/ostatus_controller_test.exs18++++++++++++++++++
3 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex @@ -44,10 +44,22 @@ defmodule Pleroma.Web.OStatus.OStatusController do end def object(conn, %{"uuid" => uuid}) do - id = o_status_url(conn, :object, uuid) - activity = Activity.get_create_activity_by_object_ap_id(id) - user = User.get_cached_by_ap_id(activity.data["actor"]) + 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 + represent_activity(conn, activity, user) + end + end + + def activity(conn, %{"uuid" => uuid}) do + with id <- o_status_url(conn, :activity, uuid), + %Activity{} = activity <- Activity.get_by_ap_id(id), + %User{} = user <- User.get_cached_by_ap_id(activity.data["actor"]) do + represent_activity(conn, activity, user) + end + end + defp represent_activity(conn, activity, user) do response = activity |> ActivityRepresenter.to_simple_form(user, true) |> ActivityRepresenter.wrap_with_entry diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex @@ -77,6 +77,7 @@ defmodule Pleroma.Web.Router do pipe_through :ostatus get "/objects/:uuid", OStatus.OStatusController, :object + get "/activities/:uuid", OStatus.OStatusController, :activity get "/users/:nickname/feed", OStatus.OStatusController, :feed get "/users/:nickname", OStatus.OStatusController, :feed_redirect diff --git a/test/web/ostatus/ostatus_controller_test.exs b/test/web/ostatus/ostatus_controller_test.exs @@ -2,6 +2,7 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do use Pleroma.Web.ConnCase import Pleroma.Factory alias Pleroma.User + alias Pleroma.Web.OStatus.ActivityRepresenter test "gets a feed", %{conn: conn} do note_activity = insert(:note_activity) @@ -15,12 +16,29 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do test "gets an object", %{conn: conn} do note_activity = insert(:note_activity) + user = User.get_by_ap_id(note_activity.data["actor"]) [_, uuid] = hd Regex.scan(~r/.+\/([\w-]+)$/, note_activity.data["object"]["id"]) url = "/objects/#{uuid}" conn = conn |> get(url) + expected = ActivityRepresenter.to_simple_form(note_activity, user, true) + |> ActivityRepresenter.wrap_with_entry + |> :xmerl.export_simple(:xmerl_xml) + |> to_string + + assert response(conn, 200) == expected + end + + test "gets an activity", %{conn: conn} do + note_activity = insert(:note_activity) + [_, uuid] = hd Regex.scan(~r/.+\/([\w-]+)$/, note_activity.data["id"]) + url = "/activities/#{uuid}" + + conn = conn + |> get(url) + assert response(conn, 200) end end