Export an event though ics

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2018-01-15 11:40:01 +01:00
parent a1f60cf386
commit 8414f9a098
4 changed files with 40 additions and 0 deletions

View 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

View File

@@ -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)

View File

@@ -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