- def object(conn, %{"uuid" => uuid}) do
- id = o_status_url(conn, :object, uuid)
- activity = Activity.get_create_activity_by_object_ap_id(id)
- user = User.get_cached_by_ap_id(activity.data["actor"])
+ # TODO: Data leak
+ def object(conn, %{"uuid" => uuid} = params) do
+ if get_format(conn) == "activity+json" do
+ ActivityPubController.object(conn, params)
+ else
+ with id <- o_status_url(conn, :object, uuid),
+ %Activity{} = activity <- Activity.get_create_activity_by_object_ap_id(id),
+ %User{} = user <- User.get_cached_by_ap_id(activity.data["actor"]) do
+ case get_format(conn) do
+ "html" -> redirect(conn, to: "/notice/#{activity.id}")
+ _ -> represent_activity(conn, activity, user)
+ end
+ end
+ end
+ end
+
+ # TODO: Data leak
+ 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
+ case get_format(conn) do
+ "html" -> redirect(conn, to: "/notice/#{activity.id}")
+ _ -> represent_activity(conn, activity, user)
+ end
+ end
+ end
+
+ # TODO: Data leak
+ def notice(conn, %{"id" => id}) do
+ with %Activity{} = activity <- Repo.get(Activity, id),
+ %User{} = user <- User.get_cached_by_ap_id(activity.data["actor"]) do
+ case get_format(conn) do
+ "html" ->
+ conn
+ |> put_resp_content_type("text/html")
+ |> send_file(200, "priv/static/index.html")
+
+ _ ->
+ represent_activity(conn, activity, user)
+ end
+ end
+ end