diff options
Diffstat (limited to 'src/server.ml')
-rw-r--r-- | src/server.ml | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/server.ml b/src/server.ml index 287a416..efd0f0d 100644 --- a/src/server.ml +++ b/src/server.ml @@ -126,6 +126,17 @@ let get_module_link base_url body = respond_link ~groups base_url Module module_id) bad_request +let list_events_with_empty_location celcat_url body = + get_module_and_groups_from_request body + (fun module_id groups -> + fetch celcat_url module_id Module >>= fun body -> + Course.decode body + |> skip_if (groups = []) (Ics.filter_groups groups) + |> Ics.filter_empty_locations + |> Pages.empty_events + |> respond) + bad_request + let check_ics = Astring.String.is_suffix ~affix:".ics" let serve base_url celcat_url mode stop = @@ -155,7 +166,9 @@ let serve base_url celcat_url mode stop = |> Ics.get_all_groups |> Pages.select module_id |> respond - | (`GET | `POST), ["lnk"], _ | `GET, ["filter"], _ -> + | `POST, ["empty"], [] -> + list_events_with_empty_location celcat_url body + | (`GET | `POST), ["lnk"], _ | `GET, ["filter"], _ | `POST, ["empty"], _ -> bad_request () | `GET, ["ics"; "g" | "m"; file], _ when check_ics file -> bad_request () |