alias Pleroma.Web.OAuth.Authorization
alias Pleroma.Web.OAuth.Scopes
alias Pleroma.Web.OAuth.Token
+ alias Pleroma.Web.RichMedia
alias Pleroma.Web.TwitterAPI.TwitterAPI
alias Pleroma.Web.ControllerHelper
end
end
- def status_card(%{assigns: %{user: user}} = conn, %{"id" => status_id}) do
- with %Activity{} = activity <- Activity.get_by_id(status_id),
+ def status_card(%{assigns: %{user: user}} = conn, %{"id" => id}) do
+ with %Activity{} = activity <- Activity.get_by_id(id),
true <- Visibility.visible_for_user?(activity, user) do
- data =
- StatusView.render(
- "card.json",
- Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)
- )
+ data = RichMedia.Helpers.fetch_data_for_activity(activity)
- json(conn, data)
+ conn
+ |> put_view(StatusView)
+ |> render("card.json", data)
else
- _e ->
- json(conn, %{})
+ _e -> {:error, :not_found}
end
end
}
end
- def render("card.json", _) do
- nil
- end
+ def render("card.json", _), do: nil
def render("attachment.json", %{attachment: attachment}) do
[attachment_url | _] = attachment["url"]
%{user: user}
end
+ test "returns empty result when rich_media disabled", %{conn: conn, user: user} do
+ Config.put([:rich_media, :enabled], false)
+ {:ok, activity} = CommonAPI.post(user, %{"status" => "https://example.com/ogp"})
+
+ response =
+ conn
+ |> get("/api/v1/statuses/#{activity.id}/card")
+ |> json_response(200)
+
+ assert response == nil
+ end
+
test "returns rich-media card", %{conn: conn, user: user} do
{:ok, activity} = CommonAPI.post(user, %{"status" => "https://example.com/ogp"})
}
end
- test "returns empty object when id invalid", %{conn: conn} do
- response =
- conn
- |> get("/api/v1/statuses/9eoozpwTul5mjSEDRI/card")
- |> json_response(200)
-
- assert response == %{}
+ test "returns 404 response when id invalid", %{conn: conn} do
+ assert %{"error" => "Record not found"} =
+ conn
+ |> get("/api/v1/statuses/9eoozpwTul5mjSEDRI/card")
+ |> json_response(404)
end
- test "returns empty object when id isn't FlakeID", %{conn: conn} do
- response =
- conn
- |> get("/api/v1/statuses/3ebbadd1-eb14-4e20-8118/card")
- |> json_response(200)
+ test "returns 404 response when id isn't FlakeID", %{conn: conn} do
+ assert %{"error" => "Record not found"} =
+ conn
+ |> get("/api/v1/statuses/3ebbadd1-eb14-4e20-8118/card")
+ |> json_response(404)
- assert response == %{}
+ assert %{"error" => "Record not found"} =
+ conn
+ |> get("/api/v1/statuses/8118/card")
+ |> json_response(404)
end
end