Show group address in group metadata

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2020-09-02 10:00:39 +02:00
parent 93728cb9d7
commit 952e592e2c
8 changed files with 61 additions and 28 deletions

View File

@@ -23,7 +23,7 @@ defmodule Mobilizon.Web.Cache.ActivityPub do
{:commit, Actor.t()} | {:ignore, nil}
def get_actor_by_name(name) do
Cachex.fetch(@cache, "actor_" <> name, fn "actor_" <> name ->
case Actors.get_actor_by_name(name) do
case Actors.get_actor_by_name_with_preload(name) do
%Actor{} = actor ->
{:commit, actor}

View File

@@ -157,12 +157,7 @@ defmodule Mobilizon.Web.PageController do
defp is_local?(%{local: local}), do: if(local, do: true, else: :remote)
defp is_local?(_), do: false
defp maybe_add_noindex_header(conn, %Event{visibility: visibility})
when visibility != :public do
put_resp_header(conn, "x-robots-tag", "noindex")
end
defp maybe_add_noindex_header(conn, %Post{visibility: visibility})
defp maybe_add_noindex_header(conn, %{visibility: visibility})
when visibility != :public do
put_resp_header(conn, "x-robots-tag", "noindex")
end

View File

@@ -8,6 +8,16 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do
alias Mobilizon.Web.JsonLD.ObjectView
alias Mobilizon.Web.MediaProxy
def render("group.json", %{group: %Actor{} = group}) do
%{
"@context" => "http://schema.org",
"@type" => "Organization",
"url" => group.url,
"name" => group.name || group.preferred_username,
"address" => render_address(group)
}
end
def render("event.json", %{event: %Event{} = event}) do
organizer = %{
"@type" => if(event.organizer_actor.type == :Group, do: "Organization", else: "Person"),
@@ -56,14 +66,18 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do
%{
"@type" => "Place",
"name" => address.description,
"address" => %{
"@type" => "PostalAddress",
"streetAddress" => address.street,
"addressLocality" => address.locality,
"postalCode" => address.postal_code,
"addressRegion" => address.region,
"addressCountry" => address.country
}
"address" => render_one(address, ObjectView, "address.json", as: :address)
}
end
def render("address.json", %{address: %Address{} = address}) do
%{
"@type" => "PostalAddress",
"streetAddress" => address.street,
"addressLocality" => address.locality,
"postalCode" => address.postal_code,
"addressRegion" => address.region,
"addressCountry" => address.country
}
end
@@ -81,7 +95,7 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do
}
end
defp render_location(%Event{physical_address: %Address{} = address}),
defp render_location(%{physical_address: %Address{} = address}),
do: render_one(address, ObjectView, "place.json", as: :address)
# For now the Virtual Location of an event is it's own URL,
@@ -92,4 +106,11 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do
"url" => event_url
}
end
defp render_location(_), do: nil
defp render_address(%{physical_address: %Address{} = address}),
do: render_one(address, ObjectView, "address.json", as: :address)
defp render_address(_), do: nil
end