Introduce group posts

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2020-07-09 17:24:28 +02:00
parent bec1c69d4b
commit 9c9f1385fb
249 changed files with 11886 additions and 5023 deletions

View File

@@ -4,24 +4,30 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do
alias Mobilizon.Actors.Actor
alias Mobilizon.Addresses.Address
alias Mobilizon.Events.Event
alias Mobilizon.Posts.Post
alias Mobilizon.Web.JsonLD.ObjectView
alias Mobilizon.Web.MediaProxy
def render("event.json", %{event: %Event{} = event}) do
# TODO: event.description is actually markdown!
organizer = %{
"@type" => if(event.organizer_actor.type == :Group, do: "Organization", else: "Person"),
"name" => Actor.display_name(event.organizer_actor)
}
json_ld = %{
"@context" => "https://schema.org",
"@type" => "Event",
"name" => event.title,
"description" => event.description,
"performer" => %{
"@type" =>
if(event.organizer_actor.type == :Group, do: "PerformingGroup", else: "Person"),
"name" => Actor.display_name(event.organizer_actor)
},
"location" => render_one(event.physical_address, ObjectView, "place.json", as: :address)
# We assume for now performer == organizer
"performer" => organizer,
"organizer" => organizer,
"location" => render_one(event.physical_address, ObjectView, "place.json", as: :address),
"eventStatus" =>
if(event.status == :cancelled,
do: "https://schema.org/EventCancelled",
else: "https://schema.org/EventScheduled"
)
}
json_ld =
@@ -62,4 +68,18 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do
end
def render("place.json", nil), do: %{}
def render("post.json", %{post: %Post{} = post}) do
%{
"@context" => "https://schema.org",
"@type" => "Article",
"name" => post.title,
"author" => %{
"@type" => "Organization",
"name" => Actor.display_name(post.attributed_to)
},
"datePublished" => post.publish_at,
"dateModified" => post.updated_at
}
end
end