CXM_web_session.anubis 6.83 KB
/*
 * Created by PyramIDE.
 * User: フランスのトトロ aka (David RENÉ) 
 * Date: 17/02/2017
 * Time: 17:18
 * © David RENÉ
 */

read system/convert.anubis
read system/muscle.anubis
read xlib/database/db_types.anubis
transmit types/web_session.anubis
transmit xlib/generic/session.anubis
read CXM_common.anubis
read CXM_web_dump.anubis

 reserved fields keywords
 
 "AWS_CURRENT_PAGE_TITLE"     String    current web page title
 "AWS_CURRENT_PAGE"           String    current web page
 "AWS_CURRENT_APP"            String    current web application
 "AWS_CURRENT_SPACE"          String    current web space in application
 "AWS_CURRENT_CONTENT"        String    current in the web space
 "AWS_CURRENT_PAGE_RENDERER"  String    current page renderer
 
 //"AWS_CURRENT_LEFT_MENU"  Left_Menu current left menu on the page
 //"AWS_CURRENT_MENU"       Menu      current menu, on the top of the page 



   *----------------------------------------------------------------*

public define String
  get_new_session_id
  =
  with session_id = (now, (Word32)virtual_machine_id),
  to_ascii(sha1(session_id))
.

  
 
public define WEB_Session
  to_WEB_Session
  (    
    WEB_Session_No_Var _session
  )=
  since _session is web_session(id, language, fields, c_web_request, p_web_request, d_web_request),
  web_session(id, language, to_Session_Field(fields), 
      web_request(c_web_request.http_info, var(c_web_request.lwa), c_web_request.is_https), 
      web_request(p_web_request.http_info, var(p_web_request.lwa), p_web_request.is_https),
      web_request(d_web_request.http_info, var(d_web_request.lwa), d_web_request.is_https),
  )
.

public define WEB_Session_No_Var
  to_WEB_Session_No_Var
  (
    WEB_Session _session
  )=
  since _session is web_session(id, language, fields, c_web_request, p_web_request, d_web_request),
  web_session(id, language, to_Session_Field_No_Var(*fields), 
    web_request(c_web_request.http_info, *c_web_request.lwa, c_web_request.is_https),
    web_request(p_web_request.http_info, *p_web_request.lwa, p_web_request.is_https),
    web_request(d_web_request.http_info, *d_web_request.lwa, d_web_request.is_https),
  )
.

 /************************************************/
 "AWS_CURRENT_PAGE_TITLE"     String    current web page title
 "AWS_CURRENT_PAGE"           String    current web page
 "AWS_CURRENT_APP"            String    current web application
 "AWS_CURRENT_SPACE"          String    current web space in application
 "AWS_CURRENT_CONTENT"        String    current in the web space
 "AWS_CURRENT_PAGE_RENDERER"  String    current page renderer

public define One     set_web_app(WEB_Session s, String n)  = replace_String(s.fields, "AWS_CURRENT_APP", n).
public define One     set_web_app(Var(List(Session_Field)) fields, String n)  = replace_String(fields, "AWS_CURRENT_APP", n).
public define String  get_web_app(WEB_Session s)            = get_String    (s.fields, "AWS_CURRENT_APP", "").

public define One     set_web_space(WEB_Session s, String n)= replace_String(s.fields, "AWS_CURRENT_SPACE", n).
public define One     set_web_space(Var(List(Session_Field)) fields, String n)= replace_String(fields, "AWS_CURRENT_SPACE", n).
public define String  get_web_space(WEB_Session s)          = get_String    (s.fields, "AWS_CURRENT_SPACE", "").

public define One     set_web_content(WEB_Session s, String n)= replace_String(s.fields, "AWS_CURRENT_CONTENT", n).
public define One     set_web_content(Var(List(Session_Field)) fields, String n)= replace_String(fields, "AWS_CURRENT_CONTENT", n).
public define String  get_web_content(WEB_Session s)          = get_String    (s.fields, "AWS_CURRENT_CONTENT", "").

public define One     set_page(WEB_Session s, String n)= replace_String(s.fields, "AWS_CURRENT_PAGE", n).
public define One     set_page(Var(List(Session_Field)) fields, String n)= replace_String(fields, "AWS_CURRENT_PAGE", n).
public define String  get_page(WEB_Session s)          = get_String    (s.fields, "AWS_CURRENT_PAGE", "").

public define One     set_page_title(WEB_Session s, String n)= replace_String(s.fields, "AWS_CURRENT_PAGE_TITLE", n).
public define One     set_page_title(Var(List(Session_Field)) fields, String n)= replace_String(fields, "AWS_CURRENT_PAGE_TITLE", n).
public define String  get_page_title(WEB_Session s)          = get_String    (s.fields, "AWS_CURRENT_PAGE_TITLE", "").

public define One     set_renderer(WEB_Session s, String n)  = replace_String(s.fields, "AWS_CURRENT_PAGE_RENDERER", n).
public define One     set_renderer(Var(List(Session_Field)) fields, String n)  = replace_String(fields, "AWS_CURRENT_PAGE_RENDERER", n).
public define String  get_renderer(WEB_Session s)            = get_String    (s.fields, "AWS_CURRENT_PAGE_RENDERER", "").


public define String
  dump_WEB_Session_Fields
  (
    List(Session_Field) _fields,
    String                  indent
  )=
  "\n"+
  indent+"-- BEGIN Fields of Session:---------------- \n"+  
  join("\n", map((Session_Field _field) |-> dump_Session_Field(_field, indent), _fields))+
  "\n"+indent+"-- END Fields of Session:---------------- \n"  
.

public define String
  dump_WEB_Session_Fields
  (
    Var(List(Session_Field)) _fields,
    String                        indent
  )=
  dump_WEB_Session_Fields(*_fields, indent)
.

 *---------------------- DUMP ------------------*
  
    String                  language,
    List(WEB_Session_Field) fields,
    WEB_Request             web_request,
    WEB_Request             previous_web_request
    
public define String
  dump
  (
    WEB_Session _session
  )=
  since _session is web_session(id, language, fields, web_request, previous_web_request, draw_web_request),
  "WEB Session Dump: \n"+
  "----------------- \n"+
  "Session ID : ["+id+"]\n"+
  "Language   : ["+language+"]\n\n"+
  dump_WEB_Session_Fields(*fields, "")+
  "-----------------------------------------------------------------------------\n"+  
  "Current WEB REQUEST:\n"+
  "-----------------------------------------------------------------------------\n"+
  "http_info:\n"+
  dump_http_info(web_request.http_info)+"\n"+
  "web arguments:"+
  dump_web_arg_values(*web_request.lwa)+"\n\n"+
  "-----------------------------------------------------------------------------\n"+  
  "Previous WEB REQUEST:\n"+
  "-----------------------------------------------------------------------------\n"+  
  "is https "+to_String(previous_web_request.is_https)+"\n"+
  "http_info:\n"+
  dump_http_info(previous_web_request.http_info)+"\n"+
  "web arguments:"+
  dump_web_arg_values(*previous_web_request.lwa)+"\n\n"+  
  "-----------------------------------------------------------------------------\n"+  
  "Draw WEB REQUEST:\n"+
  "-----------------------------------------------------------------------------\n"+  
  "is https "+to_String(draw_web_request.is_https)+"\n"+
  "http_info:\n"+
  dump_http_info(draw_web_request.http_info)+"\n"+
  "web arguments:"+
  dump_web_arg_values(*draw_web_request.lwa)+"\n"  
.