birdy_chat/lib/birdy_chat_web/api/messages/controller.ex

29 lines
763 B
Elixir

defmodule BirdyChatWeb.Api.Messages.Controller do
@moduledoc """
The endpoint to be used by users from the "home server".
"""
use BirdyChatWeb, :controller
def create(conn, params) do
case BirdyChat.Message.validate(params) do
{:ok, changeset} ->
case BirdyChat.Dispatcher.dispatch(changeset) do
:ok ->
conn
|> put_status(:created)
|> render(:create, message: changeset.changes)
{:error, error} ->
conn
|> put_status(:unprocessable_entity)
|> render(:error, message: error)
end
{:error, changeset} ->
conn
|> put_status(:unprocessable_entity)
|> render(:error, changeset: changeset)
end
end
end