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 d3cf00e..c1a0ba9 100644 --- a/src/server.ml +++ b/src/server.ml @@ -47,7 +47,20 @@ let respond ?(mime="text/html; charset=utf-8") ?(status=`OK) body = let headers = Header.init_with "Content-Type" mime in Server.respond_string ~status ~body ~headers () +let get_tz () = + Lwt_unix.file_exists "/etc/timezone" >>= fun exists -> + if exists then + Lwt_io.(open_file ~mode:Input "/etc/timezone") >>= fun file -> + Lwt.finalize + (fun () -> + Lwt_io.read file >|= + String.trim) + (fun () -> Lwt_io.close file) + else + Lwt.return "" + let serve base_url celcat_url mode stop = + get_tz () >>= fun tzname -> let fetch = fetch celcat_url in let callback _conn req _body = let meth = Request.meth req and @@ -68,7 +81,7 @@ let serve base_url celcat_url mode stop = let group = String.(sub file 0 (length file - 4)) in fetch group >>= fun body -> Course.decode body - |> Ics.to_string + |> Ics.to_string tzname |> respond ~mime:"text/calendar; charset=utf-8" | `GET, _, _ -> Server.respond_string ~status:`Not_found ~body:"Not found\n" () |