forked from AkkomaGang/akkoma
Merge branch 'bugfix/favourites-link-header' into 'develop'
Add link headers and honour parameters on Mastodon API /favourites See merge request pleroma/pleroma!659
This commit is contained in:
commit
fbcb6f76b6
2 changed files with 34 additions and 4 deletions
|
@ -824,9 +824,9 @@ def account_search(%{assigns: %{user: user}} = conn, %{"q" => query} = params) d
|
||||||
json(conn, res)
|
json(conn, res)
|
||||||
end
|
end
|
||||||
|
|
||||||
def favourites(%{assigns: %{user: user}} = conn, _) do
|
def favourites(%{assigns: %{user: user}} = conn, params) do
|
||||||
params =
|
params =
|
||||||
%{}
|
params
|
||||||
|> Map.put("type", "Create")
|
|> Map.put("type", "Create")
|
||||||
|> Map.put("favorited_by", user.ap_id)
|
|> Map.put("favorited_by", user.ap_id)
|
||||||
|> Map.put("blocking_user", user)
|
|> Map.put("blocking_user", user)
|
||||||
|
@ -836,6 +836,7 @@ def favourites(%{assigns: %{user: user}} = conn, _) do
|
||||||
|> Enum.reverse()
|
|> Enum.reverse()
|
||||||
|
|
||||||
conn
|
conn
|
||||||
|
|> add_link_headers(:favourites, activities)
|
||||||
|> put_view(StatusView)
|
|> put_view(StatusView)
|
||||||
|> render("index.json", %{activities: activities, for: user, as: :activity})
|
|> render("index.json", %{activities: activities, for: user, as: :activity})
|
||||||
end
|
end
|
||||||
|
|
|
@ -1349,13 +1349,42 @@ test "returns the favorites of a user", %{conn: conn} do
|
||||||
|
|
||||||
{:ok, _, _} = CommonAPI.favorite(activity.id, user)
|
{:ok, _, _} = CommonAPI.favorite(activity.id, user)
|
||||||
|
|
||||||
conn =
|
first_conn =
|
||||||
conn
|
conn
|
||||||
|> assign(:user, user)
|
|> assign(:user, user)
|
||||||
|> get("/api/v1/favourites")
|
|> get("/api/v1/favourites")
|
||||||
|
|
||||||
assert [status] = json_response(conn, 200)
|
assert [status] = json_response(first_conn, 200)
|
||||||
assert status["id"] == to_string(activity.id)
|
assert status["id"] == to_string(activity.id)
|
||||||
|
|
||||||
|
assert [{"link", link_header}] =
|
||||||
|
Enum.filter(first_conn.resp_headers, fn element -> match?({"link", _}, element) end)
|
||||||
|
|
||||||
|
# Honours query params
|
||||||
|
{:ok, second_activity} =
|
||||||
|
CommonAPI.post(other_user, %{
|
||||||
|
"status" =>
|
||||||
|
"Trees Are Never Sad Look At Them Every Once In Awhile They're Quite Beautiful."
|
||||||
|
})
|
||||||
|
|
||||||
|
{:ok, _, _} = CommonAPI.favorite(second_activity.id, user)
|
||||||
|
|
||||||
|
last_like = status["id"]
|
||||||
|
|
||||||
|
second_conn =
|
||||||
|
conn
|
||||||
|
|> assign(:user, user)
|
||||||
|
|> get("/api/v1/favourites?since_id=#{last_like}")
|
||||||
|
|
||||||
|
assert [second_status] = json_response(second_conn, 200)
|
||||||
|
assert second_status["id"] == to_string(second_activity.id)
|
||||||
|
|
||||||
|
third_conn =
|
||||||
|
conn
|
||||||
|
|> assign(:user, user)
|
||||||
|
|> get("/api/v1/favourites?limit=0")
|
||||||
|
|
||||||
|
assert [] = json_response(third_conn, 200)
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "updating credentials" do
|
describe "updating credentials" do
|
||||||
|
|
Loading…
Reference in a new issue