Commit 32f8435d8a643921caadf22d6eaac3af41665bb3
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
Showing
3 changed files
with
79 additions
and
25 deletions
Show diff stats
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 | . |