Erlang Programming/Creating Web Applications with yaws/Arg structure

The arg data structure is the main mechanism which the server uses to forward essential information to the web application. The #arg record is defined in yaws_api.hrl and is defined as: -record(arg, {         clisock,        %% the socket leading to the peer client          client_ip_port, %% {Ip, Port} for the client          headers,        %% headers          req,            %% request          clidata,        %% The client data (as a binary in POST requests)          server_path,    %% The normalized server path          querydata,      %% Was the URL on the form of ...?query (GET reqs)          appmoddata,     %% the remainder of the path leading up to the query          docroot,        %% where's the data          fullpath,       %% full deep path to yaws file          cont,           %% Continuation for chunked multipart uploads          state,          %% State for use by users of the out/1 callback          pid,            %% pid of the yaws worker process          opaque,         %% useful to pass static data          appmod_prepath, %% path in front of:            pathinfo        %% Set to 'd/e' when calling c.yaws for the request %% http://some.host/a/b/c.yaws/d/e }).

Some of the parameters in the Arg structure contain additional information as shown below.

-record(headers, {         connection,          accept,          host,          if_modified_since,          if_match,          if_none_match,          if_range,          if_unmodified_since,          range,          referer,          user_agent,          accept_ranges,          cookie = [],          keep_alive,          content_length,          authorization,          other = []   %% misc other headers         }).