Current section

Files

Jump to
raxx_kit priv template lib app_name api actions welcome_message.ex.eex
Raw

priv/template/lib/app_name/api/actions/welcome_message.ex.eex

defmodule <%= @module %>.API.Actions.WelcomeMessage do
use Raxx.SimpleServer
alias <%= @module %>.API
@impl Raxx.SimpleServer
def handle_request(_request = %{method: :GET}, _state) do
data = %{message: "Hello, Raxx!"}
response(:ok)
|> set_body(Jason.encode!(%{data: data}))
end
def handle_request(request = %{method: :POST}, _state) do
case Jason.decode(request.body) do
{:ok, %{"name" => name}} ->
message = <%= @module %>.welcome_message(name)
data = %{message: message}
response(:ok)
|> API.set_json_payload(%{data: data})
{:ok, _} ->
error = %{title: "Missing required data parameter 'name'"}
response(:bad_request)
|> API.set_json_payload(%{errors: [error]})
{:error, _} ->
error = %{title: "Could not decode request data"}
response(:unsupported_media_type)
|> API.set_json_payload(%{errors: [error]})
end
end
end