Entendu/lib/entendu_web/controllers/link_controller.ex

65 lines
1.5 KiB
Elixir

defmodule EntenduWeb.LinkController do
@moduledoc """
Controller responsible for managing links responses
"""
use EntenduWeb, :controller
use Params
alias Entendu.Links
alias Links.Link
alias Ecto.Changeset
alias EntenduWeb.FallbackController
action_fallback(FallbackController)
def just_page(conn, _params) do
render(conn, "just.html")
end
defparams(
first_step(%{
burn_after_reading: [field: :boolean, default: false],
expires: :utc_datetime,
filename: :string,
filetype: :string,
text_content: :string,
file_content: :string
})
)
def just(conn, params) do
with %Changeset{valid?: true} = changeset <- first_step(params),
link_params <- Params.to_map(changeset),
{:ok, %Link{} = link} <- Links.create_link(link_params) do
conn
|> render("show_authorized.json", %{link: link})
end
end
def for_page(conn, _params) do
render(conn, "for.html")
end
defparams(
second_step(%{
service: :string,
recipient: :string
})
)
def for(conn, %{link_id: link_id} = params) do
with %Changeset{valid?: true} = changeset <- first_step(params),
link_params <- Params.to_map(changeset),
%Link{} = link <- Links.get_link(link_id),
Links.update_link(link, link_params) do
conn
|> render("show_authorized.json", %{link: link})
end
end
def you_page(conn, _params) do
render(conn, "you.html")
end
end