Export an event though ics
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
19
lib/eventos/export/icalendar.ex
Normal file
19
lib/eventos/export/icalendar.ex
Normal file
@@ -0,0 +1,19 @@
|
||||
defmodule Eventos.Export.ICalendar do
|
||||
@moduledoc """
|
||||
Export an event to iCalendar format
|
||||
"""
|
||||
|
||||
alias Eventos.Events.Event
|
||||
|
||||
@spec export_event(%Event{}) :: String
|
||||
def export_event(%Event{} = event) do
|
||||
events = [%ICalendar.Event{
|
||||
summary: event.title,
|
||||
dtstart: event.begins_on,
|
||||
dtend: event.ends_on,
|
||||
description: event.description
|
||||
}]
|
||||
%ICalendar{events: events}
|
||||
|> ICalendar.to_ics()
|
||||
end
|
||||
end
|
||||
@@ -6,6 +6,7 @@ defmodule EventosWeb.EventController do
|
||||
|
||||
alias Eventos.Events
|
||||
alias Eventos.Events.Event
|
||||
alias Eventos.Export.ICalendar
|
||||
|
||||
action_fallback EventosWeb.FallbackController
|
||||
|
||||
@@ -28,6 +29,13 @@ defmodule EventosWeb.EventController do
|
||||
render(conn, "show.json", event: event)
|
||||
end
|
||||
|
||||
def export_to_ics(conn, %{"id" => id}) do
|
||||
event = id
|
||||
|> Events.get_event!()
|
||||
|> ICalendar.export_event()
|
||||
send_resp(conn, 200, event)
|
||||
end
|
||||
|
||||
def update(conn, %{"id" => id, "event" => event_params}) do
|
||||
event = Events.get_event!(id)
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ defmodule EventosWeb.Router do
|
||||
resources "/users", UserController, except: [:new, :edit, :show]
|
||||
resources "/accounts", AccountController, except: [:new, :edit]
|
||||
resources "/events", EventController
|
||||
get "/events/:id/ics", EventController, :export_to_ics
|
||||
resources "/categories", CategoryController
|
||||
resources "/tags", TagController
|
||||
resources "/event_accounts", EventAccountsController
|
||||
|
||||
Reference in New Issue
Block a user