% 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) -> 
    case application:get_env(nitrogen, Key) of
        {ok, Value} -> 
            [Value];
        undefined ->
            DefaultValue
    end.

% 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.

Update config handler to also use nitrogen_core
Update config handler to also use nitrogen_core

Fixes https://github.com/nitrogen/nitrogen/issues/98
