simple-learning

Simple learning web program
git clone git://git.laack.co/simple-learning.git
Log | Files | Refs | README | LICENSE

commit c4fa07f69a4ca8de26b18e5509463fc72e47f71d
parent 4982db356b79cfaf5df895944cf954f318cb4921
Author: Andrew Laack <andrew@laack.co>
Date:   Tue,  1 Sep 2026 20:33:26 -0500

This works to propogate issues up, but there is more work to be done on having better error messages

Diffstat:
Mlearning/bin/main.ml | 21++++++++++++++++++++-
Mlearning/test/test_rendering.ml | 2++
2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/learning/bin/main.ml b/learning/bin/main.ml @@ -10,8 +10,27 @@ let is_safe_path name = (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c = '-' || c = '_' || c = '.') name + +(* TODO: Ensure server responds correctly to invalid requests. *) +(* + Examples: Non-existent course + Examples: Non-existent page + Examples: Non-existent asset + Examples: Unknown path +*) + + +let my_error_template _error debug_info suggested_response = + let status = Dream.status suggested_response in + let code = Dream.status_to_int status + and reason = Dream.status_to_string status in + Dream.set_header suggested_response "Content-Type" Dream.text_html; + Dream.set_body suggested_response ((string_of_int code) ^ " - " ^ reason); + Lwt.return suggested_response + + let () = - Dream.run + Dream.run ~error_handler:(Dream.error_template my_error_template) @@ Dream.logger @@ Dream.router [ Dream.get "/course/:course_name/" (fun request -> Dream.html (Render.render_sidebar @@ Render.render_course_home diff --git a/learning/test/test_rendering.ml b/learning/test/test_rendering.ml @@ -1,3 +1,5 @@ +(* TODO: Add xss tests. *) + open Learning let courses = Array.to_list (Render.get_course_array)