Current section

Files

Jump to
exq_ui lib exq_ui.ex
Raw

lib/exq_ui.ex

defmodule ExqUi do
use Application
import Supervisor.Spec, warn: false
def start(_type, _args) do
launch_app()
end
def launch_app do
web_port = Application.get_env(:exq_ui, :web_port, 4040)
web_namespace = Application.get_env(:exq_ui, :web_namespace, "")
run_server? = Application.get_env(:exq_ui, :server, true)
api_name = Exq.Api.Server.server_name(ExqUi)
unless Process.whereis(api_name) do
{:ok, _} = Exq.start_link(name: ExqUi, mode: :api)
end
{:ok, _} = Exq.Api.queue_size(api_name)
if run_server? do
IO.puts "Starting ExqUI on Port #{web_port}"
cowboy_version_adapter().http ExqUi.RouterPlug,
[namespace: web_namespace, exq_opts: [name: api_name]], port: web_port
end
Supervisor.start_link([], strategy: :one_for_one)
end
def cowboy_version_adapter() do
case minor_elixir_version() >= 4 do
true -> plug_adapter_cowboy(otp_version())
_ -> Plug.Adapters.Cowboy
end
end
def otp_version do
:erlang.system_info(:otp_release)
|> to_string()
|> String.to_integer()
end
def minor_elixir_version do
{_, version} = Version.parse(System.version)
version.minor
end
defp plug_adapter_cowboy(otp_version) when otp_version < 19, do: Plug.Adapters.Cowboy
defp plug_adapter_cowboy(otp_version) when otp_version in 19..20, do: Plug.Adapters.Cowboy2
defp plug_adapter_cowboy(otp_version) when otp_version >= 21, do: Plug.Cowboy
end