aboutsummaryrefslogtreecommitdiff
path: root/src/server.ml
diff options
context:
space:
mode:
Diffstat (limited to 'src/server.ml')
-rw-r--r--src/server.ml15
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 ()