Packages

Outerfaces ODD (Outerfaces Dependency Distribution) -- Extensions for Outerfaces framework

Current section

Files

Jump to
outerfaces_odd lib endpoints configuration_builder.ex
Raw

lib/endpoints/configuration_builder.ex

defmodule Outerfaces.Odd.Endpoints.ConfigurationBuilder do
@moduledoc false
@spec dynamic_loader_https_endpoint_url_configuration!(
app_web_module :: atom(),
host :: String.t(),
port :: integer(),
node_ip :: String.t() | {integer(), integer(), integer(), integer()},
secret_key_base :: String.t(),
keyfile_path :: String.t(),
certfile_path :: String.t()
) :: Keyword.t()
def dynamic_loader_https_endpoint_url_configuration!(
app_web_module,
host,
port,
ip_address,
secret_key_base,
keyfile_path,
certfile_path
)
when is_atom(app_web_module) and
is_binary(host) and
is_integer(port) and
is_binary(secret_key_base) and
is_binary(keyfile_path) and
is_binary(certfile_path) and
(is_binary(ip_address) or is_tuple(ip_address)) do
[
url: [
host: host,
port: port,
scheme: "https"
],
https: [
ip: ip_address,
port: port,
cipher_suite: :strong,
keyfile: keyfile_path,
certfile: certfile_path
],
server: true,
secret_key_base: secret_key_base,
force_ssl: [hsts: true],
adapter: Bandit.PhoenixAdapter,
transport_options: [
alpn_preferred_protocols: ["h2", "http/1.1"]
],
render_errors: [
formats: [json: Module.concat([app_web_module, ErrorJSON])],
layout: false
]
]
end
def dynamic_loader_https_endpoint_url_configuration!(
app_web_module,
host,
port,
ip_address,
secret_key_base,
keyfile_path,
certfile_path
) do
raise ArgumentError, """
Invalid arguments for #{__MODULE__}.dynamic_loader_https_endpoint_url_configuration!/6:
#{inspect(app_web_module: app_web_module,
host: host,
port: port,
ip_address: ip_address,
secret_key_base: secret_key_base,
keyfile_path: keyfile_path,
certfile_path: certfile_path)}
"""
end
@spec dynamic_loader_http_endpoint_url_configuration!(
app_web_module :: atom(),
host :: String.t(),
port :: integer(),
ip_address ::
String.t() | {integer(), integer(), integer(), integer()},
secret_key_base :: String.t()
) :: Keyword.t()
def dynamic_loader_http_endpoint_url_configuration!(
app_web_module,
host,
port,
ip_address,
secret_key_base
)
when is_atom(app_web_module) and
is_binary(host) and
is_integer(port) and
is_binary(secret_key_base) and
(is_binary(ip_address) or is_tuple(ip_address)) do
[
http: [ip: ip_address, port: port],
url: [host: host, port: port, scheme: "http"],
server: true,
secret_key_base: secret_key_base,
adapter: Bandit.PhoenixAdapter,
render_errors: [
formats: [json: Module.concat([app_web_module, ErrorJSON])],
layout: false
]
]
end
def dynamic_loader_http_endpoint_url_configuration!(
app_web_module,
host,
port,
ip_address,
secret_key_base
) do
raise ArgumentError, """
Invalid arguments for #{__MODULE__}.dynamic_loader_http_endpoint_url_configuration!/5:
#{inspect(app_web_module: app_web_module,
host: host,
port: port,
ip_address: ip_address,
secret_key_base: secret_key_base)}
"""
end
@spec build_ip_for_node_scope(String.t()) :: {integer, integer, integer, integer}
def build_ip_for_node_scope("public") do
{0, 0, 0, 0}
end
def build_ip_for_node_scope(_) do
{127, 0, 0, 1}
end
@spec build_ipv6_for_node_scope(String.t()) ::
{integer, integer, integer, integer, integer, integer, integer, integer}
def build_ipv6_for_node_scope("public") do
{0, 0, 0, 0, 0, 0, 0, 0}
end
def build_ipv6_for_node_scope(_) do
{0, 0, 0, 0, 0, 0, 0, 1}
end
@spec build_host_for_node_scope(String.t()) :: String.t()
def build_host_for_node_scope("public") do
"0.0.0.0"
end
def build_host_for_node_scope(_) do
"127.0.0.1"
end
end