Set correct Content-Type on all AP endpoints

Closes #1210

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel 2022-11-22 11:32:31 +01:00
parent 2e9414767c
commit aeaf22a224
No known key found for this signature in database
GPG key ID: A061B9DDE0CA0773
2 changed files with 18 additions and 5 deletions

View file

@ -85,8 +85,9 @@ defmodule Mobilizon.Web.ActivityPubController do
actor = Map.get(conn.assigns, :actor)
if actor_applicant_group_member?(group, actor) do
json(
conn,
conn
|> put_resp_content_type("application/activity+json")
|> json(
ActorView.render("member.json", %{
member: member,
actor_applicant: actor
@ -168,7 +169,7 @@ defmodule Mobilizon.Web.ActivityPubController do
def relay(conn, _params) do
with {status, %Actor{} = actor} when status in [:commit, :ok] <- Cache.get_relay() do
conn
|> put_resp_header("content-type", "application/activity+json")
|> put_resp_content_type("application/activity+json")
|> json(ActorView.render("actor.json", %{actor: actor}))
end
end
@ -194,7 +195,7 @@ defmodule Mobilizon.Web.ActivityPubController do
page <- max(page, 1),
%Actor{} = actor <- Actors.get_local_actor_by_name_with_preload(name) do
conn
|> put_resp_header("content-type", "application/activity+json")
|> put_resp_content_type("application/activity+json")
|> json(
ActorView.render("#{collection}.json", %{
actor: actor,
@ -208,7 +209,7 @@ defmodule Mobilizon.Web.ActivityPubController do
defp actor_collection(conn, collection, %{"name" => name}) do
with %Actor{} = actor <- Actors.get_local_actor_by_name_with_preload(name) do
conn
|> put_resp_header("content-type", "application/activity+json")
|> put_resp_content_type("application/activity+json")
|> json(
ActorView.render("#{collection}.json", %{
actor: actor,

View file

@ -141,11 +141,13 @@ defmodule Mobilizon.Web.PageController do
%Tombstone{} ->
conn
|> put_status(:gone)
|> maybe_add_content_type_header()
|> render(object_type, object: object)
_ ->
conn
|> maybe_add_noindex_header(object)
|> maybe_add_content_type_header()
|> render(object_type, object: object)
end
@ -199,4 +201,14 @@ defmodule Mobilizon.Web.PageController do
@spec is_person?(Actor.t()) :: boolean()
defp is_person?(%Actor{type: :Person}), do: true
defp is_person?(_), do: false
defp maybe_add_content_type_header(conn) do
case get_format(conn) do
"html" ->
conn
"activity-json" ->
put_resp_content_type(conn, "application/activity+json")
end
end
end