diff --git a/lib/builder_web.ml b/lib/builder_web.ml index 4785340..1d918d6 100644 --- a/lib/builder_web.ml +++ b/lib/builder_web.ml @@ -468,11 +468,29 @@ let add_routes ~datadir ~cachedir ~configdir = >>= fun () -> Dream.respond "" |> Lwt_result.ok in + let redirect_parent req = + let parent = + Dream.target req |> + String.split_on_char '/' |> + List.rev |> List.tl |> List.rev |> + String.concat "/" + in + let parent = parent ^ "/" in + let url = match Dream.all_queries req with + | [] -> parent + | xs -> parent ^ "?" ^ (Dream.to_form_urlencoded xs) + in + Dream.redirect ~status:`Temporary_Redirect req url + |> Lwt_result.ok + in + let w f req = or_error_response (f req) in Dream.router [ Dream.get "/" (w builds); + Dream.get "/job" (w redirect_parent); Dream.get "/job/:job/" (w job); + Dream.get "/job/:job/build" (w redirect_parent); Dream.get "/job/:job/failed/" (w job_with_failed); Dream.get "/job/:job/build/latest/**" (w redirect_latest); Dream.get "/job/:job/build/:build/" (w job_build);