defmodule NDCConfig do def check_mandatory_provider_config(config) do if is_nil(config[:label]) || is_nil(config[:server][:url]) || is_nil(config[:rest][:generic_headers]) || is_nil(config[:ndc]) do raise ConfigError else config end end def load_provider_config(provider) do case Application.fetch_env(:ndc_ex_gateway, String.to_atom(String.downcase(provider) <> "_config")) do {:ok, config} -> check_mandatory_provider_config(config) :error -> raise ConfigMissingError end end # def load_provider(path), do: path |> test_file_exists |> read_file |> expose_provider_config |> check_mandatory_provider_config # def load_consumer(path), do: path |> test_file_exists |> read_file |> expose_consumer_config # defp test_file_exists(path) do # {status, _} = File.read("#{path}/config.exs") # if status === :error do # raise ConfigMissingError # else # path # end # end # defp read_file(path), do: Mix.Config.read!("#{path}/config.exs") # defp expose_provider_config(provider_config), do: provider_config[:PROVIDER] # defp expose_consumer_config(consumer_config), do: consumer_config[:CONSUMER] end defmodule ConfigError do defexception message: "Configuration file is malformed or missing required data." end defmodule ConfigMissingError do defexception message: "Configuration file is missing." end