Packages
potionx
0.4.2
0.8.15
0.8.14
0.8.13
0.8.12
0.8.11
0.8.10
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.3
0.5.2
0.5.1
0.5.0
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.18
0.2.17
0.2.16
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.1.1
0.1.0
Potionx is a set of generators and functions that speeds up the process of setting up and deploying a full-stack application that uses Elixir with GraphQL for the server-side component and Vue for the frontend component.
Current section
Files
Jump to
Current section
Files
lib/potionx/plugs/health_plug.ex
defmodule Potionx.Plug.Health do
@behaviour Plug
@path_startup "/_k8s/startup"
@path_liveness "/_k8s/liveness"
@path_readiness "/_k8s/readiness"
@impl true
def init(opts), do: opts
@impl true
def call(%Plug.Conn{} = conn, opts) do
health_module = Keyword.fetch!(opts, :health_module)
case conn.request_path do
@path_startup -> health_response(conn, health_module.has_started?())
@path_liveness -> health_response(conn, health_module.is_alive?())
@path_readiness -> health_response(conn, health_module.is_ready?())
_other -> conn
end
end
# Respond according to health checks
defp health_response(conn, true) do
conn
|> Plug.Conn.send_resp(200, "OK")
|> Plug.Conn.halt()
end
defp health_response(conn, false) do
conn
|> Plug.Conn.send_resp(503, "SERVICE UNAVAILABLE")
|> Plug.Conn.halt()
end
end