Packages
maru
0.8.0
0.14.0-pre.1
0.13.2
0.13.1
0.13.0
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
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.0
0.5.1
0.5.0
0.4.1
0.4.0
0.3.1
0.3.0
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
REST-like API micro-framework for elixir inspired by grape.
Current section
Files
Jump to
Current section
Files
lib/maru.ex
require Logger
defmodule Maru do
use Application
@version Mix.Project.config[:version]
def version do
@version
end
@default_http_port 4000
@default_https_port 4040
def start(_type, _args) do
Application.ensure_all_started :plug
for {module, options} <- Maru.Config.servers do
if Keyword.has_key? options, :http do
opts = options[:http] |> Keyword.merge [port: to_port(options[:http][:port]) || @default_http_port]
Plug.Adapters.Cowboy.http module, [], opts
Logger.info "Running #{module} with Cowboy on http://127.0.0.1:#{opts[:port]}"
end
if Keyword.has_key? options, :https do
opts = options[:https] |> Keyword.merge [port: to_port(options[:https][:port]) || @default_https_port]
Plug.Adapters.Cowboy.https module, [], opts
Logger.info "Running #{module} with Cowboy on https://127.0.0.1:#{opts[:port]}"
end
end
{:ok, self}
end
defp to_port(nil), do: nil
defp to_port(port) when is_integer(port), do: port
defp to_port(port) when is_binary(port), do: port |> String.to_integer
defp to_port({:system, env_var}), do: System.get_env(env_var) |> to_port
end