65 lines
1.5 KiB
Elixir
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
|