forked from AkkomaGang/akkoma
Also show activities in OStatus.
This commit is contained in:
parent
f972966385
commit
03b7b2fa24
3 changed files with 34 additions and 3 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue