Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
80 lines (72 sloc) 3.2 KB
%%%
%%% Copyright © IDEALX S.A.S. 2004
%%%
%%% Author : Nicolas Niclausse <nicolas.niclausse@niclux.org>
%%% Created: 20 Apr 2004 by Nicolas Niclausse <nicolas.niclausse@niclux.org>
%%%
%%% This program is free software; you can redistribute it and/or modify
%%% it under the terms of the GNU General Public License as published by
%%% the Free Software Foundation; either version 2 of the License, or
%%% (at your option) any later version.
%%%
%%% This program is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
%%% GNU General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License
%%% along with this program; if not, write to the Free Software
%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
%%%
%%% In addition, as a special exception, you have the permission to
%%% link the code of this program with any library released under
%%% the EPL license and distribute linked combinations including
%%% the two.
%%% common functions used by http clients to parse config
-module(ts_config_raw).
-vc('$Id$ ').
-author('nicolas.niclausse@niclux.org').
-export([parse_config/2]).
-include("ts_profile.hrl").
-include("ts_config.hrl").
-include("ts_raw.hrl").
-include("xmerl.hrl").
%%----------------------------------------------------------------------
%% Func: parse_config/2
%% Args: Element, Config
%% Returns: List
%% Purpose: parse a request defined in the XML config file
%%----------------------------------------------------------------------
%% Parsing other elements
parse_config(Element = #xmlElement{name=dyn_variable}, Conf = #config{}) ->
ts_config:parse(Element,Conf);
parse_config(Element = #xmlElement{name=raw, attributes=Attrs},
Config=#config{curid = Id, session_tab = Tab,
sessions = [CurS | _], dynvar=DynVar,
subst = SubstFlag, match=MatchRegExp}) ->
Ack = ts_config:getAttr(atom,Attrs, ack, no_ack),
Req = case ts_config:getAttr(string,Attrs, datasize) of
[] ->
Data = ts_config:getAttr(string,Attrs, data),
#raw{data=Data};
"%%" ++ Tail ->
#raw{datasize="%%"++Tail};
_ -> % datasize is not a dynamic variable; must be an integer
#raw{datasize=ts_config:getAttr(integer,Attrs, datasize)}
end,
ts_config:mark_prev_req(Id-1, Tab, CurS),
Msg=#ts_request{ack = Ack,
subst = SubstFlag,
match = MatchRegExp,
param = Req},
ets:insert(Tab,{{CurS#session.id, Id},Msg#ts_request{endpage=true,
dynvar_specs=DynVar}}),
lists:foldl( fun(A,B)->ts_config:parse(A,B) end,
Config#config{dynvar=[]},
Element#xmlElement.content);
%% Parsing other elements
parse_config(Element = #xmlElement{}, Conf = #config{}) ->
ts_config:parse(Element,Conf);
%% Parsing non #xmlElement elements
parse_config(_, Conf = #config{}) ->
Conf.
Jump to Line
Something went wrong with that request. Please try again.