% vim: sw=4 ts=4 et ft=erlang % Nitrogen Web Framework for Erlang % Copyright (c) 2008-2010 Rusty Klophaus % See MIT-LICENSE for licensing information. -module (default_config_handler). -include("wf.hrl"). -behaviour (config_handler). -export ([ init/2, finish/2, get_value/4, get_values/4 ]). init(_Config, _State) -> {ok, []}. finish(_Config, _State) -> {ok, []}. get_value(Key, DefaultValue, Config, State) -> case get_values(Key, [DefaultValue], Config, State) of [Value] -> Value; Values -> error_logger:error_msg("Too many matching config values for key: ~p~n", [Key]), throw({nitrogen_error, too_many_matching_values, Key, Values}) end. get_values(Key, DefaultValue, Config, State) -> %% By default, use nitrogen_core as the app (for Nitrogen 2.4+), however, %% for backwards compatibility, also check for the nitrogen app. Apps = [nitrogen_core, nitrogen], get_values(Apps, Key, DefaultValue, Config, State). get_values([], _Key, DefaultValue, _Config, _State) -> DefaultValue; get_values([App|Apps], Key, DefaultValue, _Config, _State) -> case application:get_env(App, Key) of {ok, Value} -> [Value]; undefined -> get_values(Apps, Key, DefaultValue, _Config, _State) end.