Commit 32f8435d8a643921caadf22d6eaac3af41665bb3

Authored by totoro
1 parent e37ba660

in web_session change lwa as Var in web_request

add helper functions in for adding, removing and replacing web_arg in var list web_arg
web/CXM_making_a_web_site.anubis
@@ -3445,14 +3445,14 @@ define (Maybe(WEB_Session), HTTP_Answer) @@ -3445,14 +3445,14 @@ define (Maybe(WEB_Session), HTTP_Answer)
3445 WEB_Session _session, 3445 WEB_Session _session,
3446 Maybe(String) _mb_action_name, 3446 Maybe(String) _mb_action_name,
3447 (HTTP_Info, 3447 (HTTP_Info,
3448 - List(Web_arg), 3448 + Var(List(Web_arg)),
3449 Bool is_https) -> WEB_Session initial_session, 3449 Bool is_https) -> WEB_Session initial_session,
3450 )= 3450 )=
3451 //get the action name 3451 //get the action name
3452 with mb_action_name = 3452 with mb_action_name =
3453 if _mb_action_name is 3453 if _mb_action_name is
3454 { 3454 {
3455 - failure then get_String(_session.web_request.lwa, "aws_action"), 3455 + failure then get_String(*_session.web_request.lwa, "aws_action"),
3456 success(_an) then success(_an) 3456 success(_an) then success(_an)
3457 }, 3457 },
3458 3458
@@ -3461,7 +3461,7 @@ define (Maybe(WEB_Session), HTTP_Answer) @@ -3461,7 +3461,7 @@ define (Maybe(WEB_Session), HTTP_Answer)
3461 failure then 3461 failure then
3462 //(failure, error_page(http_not_found, "Action name failure", _session)), 3462 //(failure, error_page(http_not_found, "Action name failure", _session)),
3463 with new_session = initial_session(_session.web_request.http_info, _session.web_request.lwa, _session.web_request.is_https), 3463 with new_session = initial_session(_session.web_request.http_info, _session.web_request.lwa, _session.web_request.is_https),
3464 - if get_controller(get_String(new_session.web_request.lwa, "aws_controller", "root"), controllers) is 3464 + if get_controller(get_String(*new_session.web_request.lwa, "aws_controller", "root"), controllers) is
3465 { 3465 {
3466 failure then (failure, error_page(http_not_found, "Initial Session Controller not found", new_session)), 3466 failure then (failure, error_page(http_not_found, "Initial Session Controller not found", new_session)),
3467 success(new_controller) then apply_controller_action(new_controller, controllers, cinfo, new_session, failure, initial_session), 3467 success(new_controller) then apply_controller_action(new_controller, controllers, cinfo, new_session, failure, initial_session),
@@ -3473,7 +3473,7 @@ define (Maybe(WEB_Session), HTTP_Answer) @@ -3473,7 +3473,7 @@ define (Maybe(WEB_Session), HTTP_Answer)
3473 http_answer(session, answer) then (success(session), answer), 3473 http_answer(session, answer) then (success(session), answer),
3474 http_answer(answer) then (success(_session), answer), 3474 http_answer(answer) then (success(_session), answer),
3475 redirect(new_session) then 3475 redirect(new_session) then
3476 - if get_controller(get_String(new_session.web_request.lwa, "aws_controller", "root"), controllers) is 3476 + if get_controller(get_String(*new_session.web_request.lwa, "aws_controller", "root"), controllers) is
3477 { 3477 {
3478 failure then (failure, error_page(http_not_found, "Redirect Controller not found", new_session)), 3478 failure then (failure, error_page(http_not_found, "Redirect Controller not found", new_session)),
3479 success(new_controller) then apply_controller_action(new_controller, controllers, cinfo, new_session, failure, initial_session), 3479 success(new_controller) then apply_controller_action(new_controller, controllers, cinfo, new_session, failure, initial_session),
@@ -3488,7 +3488,7 @@ define (Maybe(WEB_Session), HTTP_Answer) @@ -3488,7 +3488,7 @@ define (Maybe(WEB_Session), HTTP_Answer)
3488 }, 3488 },
3489 3489
3490 redirect_to_previous then 3490 redirect_to_previous then
3491 - if get_controller(get_String(_session.previous_web_request.lwa, "aws_controller", "root"), controllers) is 3491 + if get_controller(get_String(*_session.previous_web_request.lwa, "aws_controller", "root"), controllers) is
3492 { 3492 {
3493 failure then (failure, error_page(http_not_found, "Redirect to previous Controller not found", _session)), 3493 failure then (failure, error_page(http_not_found, "Redirect to previous Controller not found", _session)),
3494 success(new_controller) then 3494 success(new_controller) then
@@ -3496,7 +3496,7 @@ define (Maybe(WEB_Session), HTTP_Answer) @@ -3496,7 +3496,7 @@ define (Maybe(WEB_Session), HTTP_Answer)
3496 apply_controller_action(new_controller, controllers, cinfo, web_session(lang, entries, previous, previous), failure, initial_session), 3496 apply_controller_action(new_controller, controllers, cinfo, web_session(lang, entries, previous, previous), failure, initial_session),
3497 }, 3497 },
3498 redirect_to_previous(entries) then 3498 redirect_to_previous(entries) then
3499 - if get_controller(get_String(_session.previous_web_request.lwa, "aws_controller", "root"), controllers) is 3499 + if get_controller(get_String(*_session.previous_web_request.lwa, "aws_controller", "root"), controllers) is
3500 { 3500 {
3501 failure then (failure, error_page(http_not_found, "Redirect to previous Controller not found", _session)), 3501 failure then (failure, error_page(http_not_found, "Redirect to previous Controller not found", _session)),
3502 success(new_controller) then 3502 success(new_controller) then
@@ -3525,11 +3525,11 @@ public define Web_Site @@ -3525,11 +3525,11 @@ public define Web_Site
3525 String state_directory, 3525 String state_directory,
3526 One -> One init, 3526 One -> One init,
3527 (HTTP_Info, 3527 (HTTP_Info,
3528 - List(Web_arg), 3528 + Var(List(Web_arg)),
3529 Bool is_https) -> WEB_Session initial_session, 3529 Bool is_https) -> WEB_Session initial_session,
3530 (WEB_Session, 3530 (WEB_Session,
3531 HTTP_Info, 3531 HTTP_Info,
3532 - List(Web_arg), 3532 + Var(List(Web_arg)),
3533 Bool is_https) -> WEB_Session expired_session, 3533 Bool is_https) -> WEB_Session expired_session,
3534 Var(List(WEB_Controller)) web_controllers, 3534 Var(List(WEB_Controller)) web_controllers,
3535 Maybe(WEB_Session) -> List(HTTP_header) additional_headers, 3535 Maybe(WEB_Session) -> List(HTTP_header) additional_headers,
@@ -3567,10 +3567,10 @@ public define Web_Site @@ -3567,10 +3567,10 @@ public define Web_Site
3567 // construct the site handler 3567 // construct the site handler
3568 // 3568 //
3569 site_handler = (Word32 http_port, Word32 https_port) |-> 3569 site_handler = (Word32 http_port, Word32 https_port) |->
3570 - ((String host_name,  
3571 - HTTP_Info http_info,  
3572 - List(Web_arg) _lwa,  
3573 - Bool is_https) |-> 3570 + ((String host_name,
  3571 + HTTP_Info http_info,
  3572 + List(Web_arg) _lwa,
  3573 + Bool is_https) |->
3574 //(Printable_tree) 3574 //(Printable_tree)
3575 //println("host_name "+host_name); 3575 //println("host_name "+host_name);
3576 //println(dump_http_info(http_info)); 3576 //println(dump_http_info(http_info));
@@ -3582,21 +3582,21 @@ public define Web_Site @@ -3582,21 +3582,21 @@ public define Web_Site
3582 { 3582 {
3583 not_found then 3583 not_found then
3584 //println("previous state not found"); 3584 //println("previous state not found");
3585 - initial_session(http_info, _lwa, is_https), 3585 + initial_session(http_info, var(_lwa), is_https),
3586 3586
3587 out_of_date(previous_session) then 3587 out_of_date(previous_session) then
3588 //println("previous out_of_date"); 3588 //println("previous out_of_date");
3589 - expired_session(previous_session, http_info, _lwa, is_https), 3589 + expired_session(previous_session, http_info, var(_lwa), is_https),
3590 3590
3591 still_valid(previous_session) then 3591 still_valid(previous_session) then
3592 since previous_session is web_session(lang, entries, previous, _), 3592 since previous_session is web_session(lang, entries, previous, _),
3593 - web_session(lang, entries, web_request(http_info, _lwa, is_https), previous) 3593 + web_session(lang, entries, web_request(http_info, var(_lwa), is_https), previous)
3594 }, 3594 },
3595 3595
3596 3596
3597 //apply the action according to current session 3597 //apply the action according to current session
3598 //since apply_controller_action(get_controller(get_String(lwa, "aws_controller", "root"), *web_controllers), *web_controllers, current_session) 3598 //since apply_controller_action(get_controller(get_String(lwa, "aws_controller", "root"), *web_controllers), *web_controllers, current_session)
3599 - since if get_controller(get_String(current_session.web_request.lwa, "aws_controller", "root"), *web_controllers) is 3599 + since if get_controller(get_String(*current_session.web_request.lwa, "aws_controller", "root"), *web_controllers) is
3600 { 3600 {
3601 failure then 3601 failure then
3602 (failure, error_page(http_not_found, "Controller not found", current_session)), 3602 (failure, error_page(http_not_found, "Controller not found", current_session)),
web/CXM_web_arg_utils.anubis
@@ -9,6 +9,46 @@ transmit tools/basis.anubis @@ -9,6 +9,46 @@ transmit tools/basis.anubis
9 transmit calexium_lib/web/CXM_common.anubis 9 transmit calexium_lib/web/CXM_common.anubis
10 transmit calexium_lib/database/db_types.anubis 10 transmit calexium_lib/database/db_types.anubis
11 11
  12 +
  13 +public define One
  14 + add_web_arg
  15 + (
  16 + Var(List(Web_arg)) lwa,
  17 + String arg_name,
  18 + String value
  19 + )=
  20 + lwa <- [ web_arg(arg_name, value) . *lwa]
  21 +.
  22 +
  23 +public define One
  24 + add_web_arg
  25 + (
  26 + Var(List(Web_arg)) lwa,
  27 + Web_arg w_arg
  28 + )=
  29 + lwa <- [ w_arg . *lwa]
  30 +.
  31 +
  32 +public define One
  33 + remove_web_arg
  34 + (
  35 + Var(List(Web_arg)) lwa,
  36 + String arg_name
  37 + )=
  38 + lwa <- map_select((Web_arg w_arg) |-> if w_arg is web_arg(name, value) then if name = arg_name then failure else success(w_arg) else success(w_arg), *lwa)
  39 +.
  40 +
  41 +public define One
  42 + replace_web_arg
  43 + (
  44 + Var(List(Web_arg)) lwa,
  45 + String arg_name,
  46 + String value
  47 + )=
  48 + lwa <- map_select((Web_arg w_arg) |-> if w_arg is web_arg(name, value) then if name = arg_name then success(web_arg(name, value)) else success(w_arg) else success(w_arg), *lwa)
  49 +.
  50 +
  51 +
12 public define Maybe(DB_id) 52 public define Maybe(DB_id)
13 get_mb_DB_id 53 get_mb_DB_id
14 ( 54 (
web/CXM_web_session.anubis
@@ -61,12 +61,20 @@ public type WEB_Session_Field_No_Var: @@ -61,12 +61,20 @@ public type WEB_Session_Field_No_Var:
61 61
62 public type WEB_Request: 62 public type WEB_Request:
63 web_request( 63 web_request(
  64 + HTTP_Info http_info,
  65 + Var(List(Web_arg)) lwa,
  66 + Bool is_https,
  67 + )
  68 +.
  69 +
  70 +public type WEB_Request_No_Var:
  71 + web_request(
64 HTTP_Info http_info, 72 HTTP_Info http_info,
65 List(Web_arg) lwa, 73 List(Web_arg) lwa,
66 Bool is_https, 74 Bool is_https,
67 ) 75 )
68 . 76 .
69 - 77 +
70 public type WEB_Session: 78 public type WEB_Session:
71 web_session( 79 web_session(
72 String language, 80 String language,
@@ -79,8 +87,8 @@ public type WEB_Session_No_Var: @@ -79,8 +87,8 @@ public type WEB_Session_No_Var:
79 web_session( 87 web_session(
80 String language, 88 String language,
81 List(WEB_Session_Field_No_Var) fields, 89 List(WEB_Session_Field_No_Var) fields,
82 - WEB_Request web_request,  
83 - WEB_Request previous_web_request 90 + WEB_Request_No_Var web_request,
  91 + WEB_Request_No_Var previous_web_request
84 ). 92 ).
85 93
86 public define Var(List(WEB_Session_Field)) 94 public define Var(List(WEB_Session_Field))
@@ -119,8 +127,11 @@ public define WEB_Session @@ -119,8 +127,11 @@ public define WEB_Session
119 ( 127 (
120 WEB_Session_No_Var _session 128 WEB_Session_No_Var _session
121 )= 129 )=
122 - since _session is web_session(language, fields, web_request, previous_web_request),  
123 - web_session(language, to_WEB_Session_Field(fields), web_request, previous_web_request) 130 + since _session is web_session(language, fields, c_web_request, p_web_request),
  131 + web_session(language, to_WEB_Session_Field(fields),
  132 + web_request(c_web_request.http_info, var(c_web_request.lwa), c_web_request.is_https),
  133 + web_request(p_web_request.http_info, var(p_web_request.lwa), p_web_request.is_https)
  134 + )
124 . 135 .
125 136
126 public define WEB_Session_No_Var 137 public define WEB_Session_No_Var
@@ -128,8 +139,11 @@ public define WEB_Session_No_Var @@ -128,8 +139,11 @@ public define WEB_Session_No_Var
128 ( 139 (
129 WEB_Session _session 140 WEB_Session _session
130 )= 141 )=
131 - since _session is web_session(language, fields, web_request, previous_web_request),  
132 - web_session(language, to_WEB_Session_Field_No_Var(*fields), web_request, previous_web_request) 142 + since _session is web_session(language, fields, c_web_request, p_web_request),
  143 + web_session(language, to_WEB_Session_Field_No_Var(*fields),
  144 + web_request(c_web_request.http_info, *c_web_request.lwa, c_web_request.is_https),
  145 + web_request(p_web_request.http_info, *p_web_request.lwa, p_web_request.is_https)
  146 + )
133 . 147 .
134 148
135 public define Maybe(WEB_Session_Field_Datum) 149 public define Maybe(WEB_Session_Field_Datum)
@@ -1125,7 +1139,7 @@ public define String @@ -1125,7 +1139,7 @@ public define String
1125 "http_info:\n"+ 1139 "http_info:\n"+
1126 dump_http_info(web_request.http_info)+"\n"+ 1140 dump_http_info(web_request.http_info)+"\n"+
1127 "web arguments:"+ 1141 "web arguments:"+
1128 - dump_web_arg_values(web_request.lwa)+"\n\n"+ 1142 + dump_web_arg_values(*web_request.lwa)+"\n\n"+
1129 "-----------------------------------------------------------------------------\n"+ 1143 "-----------------------------------------------------------------------------\n"+
1130 "Previous WEB REQUEST:\n"+ 1144 "Previous WEB REQUEST:\n"+
1131 "-----------------------------------------------------------------------------\n"+ 1145 "-----------------------------------------------------------------------------\n"+
@@ -1133,6 +1147,6 @@ public define String @@ -1133,6 +1147,6 @@ public define String
1133 "http_info:\n"+ 1147 "http_info:\n"+
1134 dump_http_info(previous_web_request.http_info)+"\n"+ 1148 dump_http_info(previous_web_request.http_info)+"\n"+
1135 "web arguments:"+ 1149 "web arguments:"+
1136 - dump_web_arg_values(previous_web_request.lwa)+"\n" 1150 + dump_web_arg_values(*previous_web_request.lwa)+"\n"
1137 1151
1138 . 1152 .