forked from AkkomaGang/akkoma
Merge branch 'bugfix/as2-accept-json' into 'develop'
accept application/json mimetype for fetching AS2 objects See merge request pleroma/pleroma!846
This commit is contained in:
commit
19bd799bd7
3 changed files with 78 additions and 8 deletions
|
@ -33,6 +33,9 @@ def feed_redirect(conn, %{"nickname" => nickname}) do
|
||||||
"activity+json" ->
|
"activity+json" ->
|
||||||
ActivityPubController.call(conn, :user)
|
ActivityPubController.call(conn, :user)
|
||||||
|
|
||||||
|
"json" ->
|
||||||
|
ActivityPubController.call(conn, :user)
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
with %User{} = user <- User.get_cached_by_nickname(nickname) do
|
with %User{} = user <- User.get_cached_by_nickname(nickname) do
|
||||||
redirect(conn, external: OStatus.feed_path(user))
|
redirect(conn, external: OStatus.feed_path(user))
|
||||||
|
@ -94,7 +97,7 @@ def salmon_incoming(conn, _) do
|
||||||
end
|
end
|
||||||
|
|
||||||
def object(conn, %{"uuid" => uuid}) do
|
def object(conn, %{"uuid" => uuid}) do
|
||||||
if get_format(conn) == "activity+json" do
|
if get_format(conn) in ["activity+json", "json"] do
|
||||||
ActivityPubController.call(conn, :object)
|
ActivityPubController.call(conn, :object)
|
||||||
else
|
else
|
||||||
with id <- o_status_url(conn, :object, uuid),
|
with id <- o_status_url(conn, :object, uuid),
|
||||||
|
@ -119,7 +122,7 @@ def object(conn, %{"uuid" => uuid}) do
|
||||||
end
|
end
|
||||||
|
|
||||||
def activity(conn, %{"uuid" => uuid}) do
|
def activity(conn, %{"uuid" => uuid}) do
|
||||||
if get_format(conn) == "activity+json" do
|
if get_format(conn) in ["activity+json", "json"] do
|
||||||
ActivityPubController.call(conn, :activity)
|
ActivityPubController.call(conn, :activity)
|
||||||
else
|
else
|
||||||
with id <- o_status_url(conn, :activity, uuid),
|
with id <- o_status_url(conn, :activity, uuid),
|
||||||
|
|
|
@ -488,11 +488,11 @@ defmodule Pleroma.Web.Router do
|
||||||
end
|
end
|
||||||
|
|
||||||
pipeline :ap_relay do
|
pipeline :ap_relay do
|
||||||
plug(:accepts, ["activity+json"])
|
plug(:accepts, ["activity+json", "json"])
|
||||||
end
|
end
|
||||||
|
|
||||||
pipeline :ostatus do
|
pipeline :ostatus do
|
||||||
plug(:accepts, ["html", "xml", "atom", "activity+json"])
|
plug(:accepts, ["html", "xml", "atom", "activity+json", "json"])
|
||||||
end
|
end
|
||||||
|
|
||||||
pipeline :oembed do
|
pipeline :oembed do
|
||||||
|
@ -521,7 +521,7 @@ defmodule Pleroma.Web.Router do
|
||||||
end
|
end
|
||||||
|
|
||||||
pipeline :activitypub do
|
pipeline :activitypub do
|
||||||
plug(:accepts, ["activity+json"])
|
plug(:accepts, ["activity+json", "json"])
|
||||||
plug(Pleroma.Web.Plugs.HTTPSignaturePlug)
|
plug(Pleroma.Web.Plugs.HTTPSignaturePlug)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -536,7 +536,7 @@ defmodule Pleroma.Web.Router do
|
||||||
end
|
end
|
||||||
|
|
||||||
pipeline :activitypub_client do
|
pipeline :activitypub_client do
|
||||||
plug(:accepts, ["activity+json"])
|
plug(:accepts, ["activity+json", "json"])
|
||||||
plug(:fetch_session)
|
plug(:fetch_session)
|
||||||
plug(Pleroma.Plugs.OAuthPlug)
|
plug(Pleroma.Plugs.OAuthPlug)
|
||||||
plug(Pleroma.Plugs.BasicAuthDecoderPlug)
|
plug(Pleroma.Plugs.BasicAuthDecoderPlug)
|
||||||
|
|
|
@ -41,7 +41,24 @@ test "with the relay disabled, it returns 404", %{conn: conn} do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "/users/:nickname" do
|
describe "/users/:nickname" do
|
||||||
test "it returns a json representation of the user", %{conn: conn} do
|
test "it returns a json representation of the user with accept application/json", %{
|
||||||
|
conn: conn
|
||||||
|
} do
|
||||||
|
user = insert(:user)
|
||||||
|
|
||||||
|
conn =
|
||||||
|
conn
|
||||||
|
|> put_req_header("accept", "application/json")
|
||||||
|
|> get("/users/#{user.nickname}")
|
||||||
|
|
||||||
|
user = Repo.get(User, user.id)
|
||||||
|
|
||||||
|
assert json_response(conn, 200) == UserView.render("user.json", %{user: user})
|
||||||
|
end
|
||||||
|
|
||||||
|
test "it returns a json representation of the user with accept application/activity+json", %{
|
||||||
|
conn: conn
|
||||||
|
} do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
|
|
||||||
conn =
|
conn =
|
||||||
|
@ -53,10 +70,43 @@ test "it returns a json representation of the user", %{conn: conn} do
|
||||||
|
|
||||||
assert json_response(conn, 200) == UserView.render("user.json", %{user: user})
|
assert json_response(conn, 200) == UserView.render("user.json", %{user: user})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "it returns a json representation of the user with accept application/ld+json", %{
|
||||||
|
conn: conn
|
||||||
|
} do
|
||||||
|
user = insert(:user)
|
||||||
|
|
||||||
|
conn =
|
||||||
|
conn
|
||||||
|
|> put_req_header(
|
||||||
|
"accept",
|
||||||
|
"application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""
|
||||||
|
)
|
||||||
|
|> get("/users/#{user.nickname}")
|
||||||
|
|
||||||
|
user = Repo.get(User, user.id)
|
||||||
|
|
||||||
|
assert json_response(conn, 200) == UserView.render("user.json", %{user: user})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "/object/:uuid" do
|
describe "/object/:uuid" do
|
||||||
test "it returns a json representation of the object", %{conn: conn} do
|
test "it returns a json representation of the object with accept application/json", %{
|
||||||
|
conn: conn
|
||||||
|
} do
|
||||||
|
note = insert(:note)
|
||||||
|
uuid = String.split(note.data["id"], "/") |> List.last()
|
||||||
|
|
||||||
|
conn =
|
||||||
|
conn
|
||||||
|
|> put_req_header("accept", "application/json")
|
||||||
|
|> get("/objects/#{uuid}")
|
||||||
|
|
||||||
|
assert json_response(conn, 200) == ObjectView.render("object.json", %{object: note})
|
||||||
|
end
|
||||||
|
|
||||||
|
test "it returns a json representation of the object with accept application/activity+json",
|
||||||
|
%{conn: conn} do
|
||||||
note = insert(:note)
|
note = insert(:note)
|
||||||
uuid = String.split(note.data["id"], "/") |> List.last()
|
uuid = String.split(note.data["id"], "/") |> List.last()
|
||||||
|
|
||||||
|
@ -68,6 +118,23 @@ test "it returns a json representation of the object", %{conn: conn} do
|
||||||
assert json_response(conn, 200) == ObjectView.render("object.json", %{object: note})
|
assert json_response(conn, 200) == ObjectView.render("object.json", %{object: note})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "it returns a json representation of the object with accept application/ld+json", %{
|
||||||
|
conn: conn
|
||||||
|
} do
|
||||||
|
note = insert(:note)
|
||||||
|
uuid = String.split(note.data["id"], "/") |> List.last()
|
||||||
|
|
||||||
|
conn =
|
||||||
|
conn
|
||||||
|
|> put_req_header(
|
||||||
|
"accept",
|
||||||
|
"application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""
|
||||||
|
)
|
||||||
|
|> get("/objects/#{uuid}")
|
||||||
|
|
||||||
|
assert json_response(conn, 200) == ObjectView.render("object.json", %{object: note})
|
||||||
|
end
|
||||||
|
|
||||||
test "it returns 404 for non-public messages", %{conn: conn} do
|
test "it returns 404 for non-public messages", %{conn: conn} do
|
||||||
note = insert(:direct_note)
|
note = insert(:direct_note)
|
||||||
uuid = String.split(note.data["id"], "/") |> List.last()
|
uuid = String.split(note.data["id"], "/") |> List.last()
|
||||||
|
|
Loading…
Reference in a new issue