diff --git a/src/discuss.ml b/src/discuss.ml index 42b1d47..9ad3bc1 100644 --- a/src/discuss.ml +++ b/src/discuss.ml @@ -130,7 +130,4 @@ let post request = | Ok () -> pp_discussion (request, user_id, comrade_id) | Error e -> Utils.render e request end - | `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form" - | `Expired _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _ - | `Wrong_session _ | `Wrong_content_type -> - Dream.empty `Bad_Request ) + | form -> Utils.handle_invalid_form form ) diff --git a/src/permap.ml b/src/permap.ml index 254f36a..9051edd 100644 --- a/src/permap.ml +++ b/src/permap.ml @@ -30,10 +30,7 @@ let register_post request = (User.login ~login:nick ~password request) in render res request ) - | `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form" - | `Many_tokens _ | `Missing_token _ | `Invalid_token _ | `Wrong_session _ - | `Expired _ | `Wrong_content_type -> - Dream.empty `Bad_Request + | form -> Utils.handle_invalid_form form let login_get request = render (Login.f request) request @@ -51,10 +48,7 @@ let login_post request = Dream.respond ~status:`See_Other ~headers:[ ("Location", url) ] "Logged in: Happy geo-posting!" ) - | `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form" - | `Many_tokens _ | `Missing_token _ | `Invalid_token _ | `Wrong_session _ - | `Expired _ | `Wrong_content_type -> - Dream.empty `Bad_Request + | form -> Utils.handle_invalid_form form let admin_get request = match Dream.session "user_id" request with @@ -101,10 +95,7 @@ let admin_post request = Dream.respond ~status:`See_Other ~headers:[ ("Location", "/admin") ] "" ) - | `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form" - | `Expired _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _ - | `Wrong_session _ | `Wrong_content_type -> - Dream.empty `Bad_Request ) + | form -> Utils.handle_invalid_form form ) let catalog request = let catalog_content = @@ -132,10 +123,7 @@ let delete_post request = Dream.respond ~status:`See_Other ~headers:[ ("Location", "/") ] "Your post was deleted!" ) - | `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form" - | `Expired _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _ - | `Wrong_session _ | `Wrong_content_type -> - Dream.empty `Bad_Request ) + | form -> Utils.handle_invalid_form form ) let report_get request = let post_id = Dream.param request "post_id" in @@ -153,10 +141,7 @@ let report_post request = let post_id = Dream.param request "post_id" in let* () = Babillard.report ~user_id ~reason post_id in Ok "The post was reported!" - | `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form" - | `Expired _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _ - | `Wrong_session _ | `Wrong_content_type -> - Dream.empty `Bad_Request ) + | form -> Utils.handle_invalid_form form ) let user request = render (Result.fold ~ok:Fun.id ~error:Fun.id (User.list ())) request @@ -205,10 +190,7 @@ let account_post request = let* () = User.update_password password user_id in Ok "Your password was updated!" else Error "Password confirmation does not match" - | `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form" - | `Many_tokens _ | `Missing_token _ | `Invalid_token _ | `Wrong_session _ - | `Expired _ | `Wrong_content_type -> - Dream.empty `Bad_Request ) + | form -> Utils.handle_invalid_form form ) let profile_get request = Utils.logged_in_or_redirect request (fun user_id -> @@ -246,6 +228,7 @@ let profile_post request = | `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form" | `Many_tokens _ | `Missing_token _ | `Invalid_token _ | `Wrong_session _ | `Expired _ | `Wrong_content_type -> ( + (* TODO: why is this here ?! *) match%lwt Dream.multipart request with | `Ok [ ("file", file) ] -> ( match User.upload_avatar file user_id with @@ -254,10 +237,7 @@ let profile_post request = ~headers:[ ("Location", "/profile") ] "Your avatar was updated!" | Error e -> render e request ) - | `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form" - | `Expired _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _ - | `Wrong_session _ | `Wrong_content_type -> - Dream.empty `Bad_Request ) ) + | form -> Utils.handle_invalid_form form ) ) let get_post_image ~thumbnail request = let id = Dream.param request "id" in @@ -347,10 +327,7 @@ let babillard_post request = ~headers:[ ("Location", adress) ] "Your thread was posted!" | Error e -> render e request ) ) - | `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form" - | `Expired _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _ - | `Wrong_session _ | `Wrong_content_type -> - Dream.empty `Bad_Request ) + | form -> Utils.handle_invalid_form form ) let thread_feed_get request = let thread_id = Dream.param request "thread_id" in @@ -401,10 +378,7 @@ let reply_post request = ~headers:[ ("Location", adress) ] "Your reply was posted!" | Error e -> render e request ) - | `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form" - | `Expired _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _ - | `Wrong_session _ | `Wrong_content_type -> - Dream.empty `Bad_Request ) + | form -> Utils.handle_invalid_form form ) let error_template _error _debug_info response = let status = Dream.status response in diff --git a/src/utils.ml b/src/utils.ml index 4aae133..751b0d8 100644 --- a/src/utils.ml +++ b/src/utils.ml @@ -22,3 +22,9 @@ let logged_in_or_redirect request logged_in = let redirect_url = Format.sprintf "/login=?redirect=%s" target in Dream.respond ~status:`See_Other ~headers:[ ("Location", redirect_url) ] "" | Some user_id -> logged_in user_id + +let handle_invalid_form = function + | `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form" + | `Many_tokens _ | `Missing_token _ | `Invalid_token _ | `Wrong_session _ + | `Expired _ | `Wrong_content_type -> + Dream.empty `Bad_Request