Also show activities in OStatus.

This commit is contained in:
Roger Braun 2017-05-19 15:53:02 +02:00
parent f972966385
commit 03b7b2fa24
3 changed files with 34 additions and 3 deletions

View File

@ -44,10 +44,22 @@ def salmon_incoming(conn, params) do
end end
def object(conn, %{"uuid" => uuid}) do def object(conn, %{"uuid" => uuid}) do
id = o_status_url(conn, :object, uuid) with id <- o_status_url(conn, :object, uuid),
activity = Activity.get_create_activity_by_object_ap_id(id) %Activity{} = activity <- Activity.get_create_activity_by_object_ap_id(id),
user = User.get_cached_by_ap_id(activity.data["actor"]) %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 response = activity
|> ActivityRepresenter.to_simple_form(user, true) |> ActivityRepresenter.to_simple_form(user, true)
|> ActivityRepresenter.wrap_with_entry |> ActivityRepresenter.wrap_with_entry

View File

@ -77,6 +77,7 @@ def user_fetcher(username) do
pipe_through :ostatus pipe_through :ostatus
get "/objects/:uuid", OStatus.OStatusController, :object get "/objects/:uuid", OStatus.OStatusController, :object
get "/activities/:uuid", OStatus.OStatusController, :activity
get "/users/:nickname/feed", OStatus.OStatusController, :feed get "/users/:nickname/feed", OStatus.OStatusController, :feed
get "/users/:nickname", OStatus.OStatusController, :feed_redirect get "/users/:nickname", OStatus.OStatusController, :feed_redirect

View File

@ -2,6 +2,7 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do
use Pleroma.Web.ConnCase use Pleroma.Web.ConnCase
import Pleroma.Factory import Pleroma.Factory
alias Pleroma.User alias Pleroma.User
alias Pleroma.Web.OStatus.ActivityRepresenter
test "gets a feed", %{conn: conn} do test "gets a feed", %{conn: conn} do
note_activity = insert(:note_activity) note_activity = insert(:note_activity)
@ -15,12 +16,29 @@ test "gets a feed", %{conn: conn} do
test "gets an object", %{conn: conn} do test "gets an object", %{conn: conn} do
note_activity = insert(:note_activity) 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"]) [_, uuid] = hd Regex.scan(~r/.+\/([\w-]+)$/, note_activity.data["object"]["id"])
url = "/objects/#{uuid}" url = "/objects/#{uuid}"
conn = conn conn = conn
|> get(url) |> 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) assert response(conn, 200)
end end
end end