diff options
Diffstat (limited to 'src/ucs.ml')
-rw-r--r-- | src/ucs.ml | 60 |
1 files changed, 59 insertions, 1 deletions
@@ -1,2 +1,60 @@ +open Lwt +open Cohttp +open Cohttp_lwt_unix + +module J = Json_encoding + +type course = { + start: string; + stop: string; + description: string; + category: string; + place: string } + +let encoding = + J.(conv + (fun _ -> ("", "", "", false, "", (), (), (), (), ""), + ([], None, (), (), (), (), ())) + (fun ((_id, start, stop, _allDay, description, (), (), (), (), category), + (_sites, _modules, (), (), (), (), ())) -> + {start; stop; description; category; place=""}) + (merge_objs + (obj10 + (req "id" string) + (req "start" string) + (req "end" string) + (req "allDay" bool) + (req "description" string) + (req "backgroundColor" unit) + (req "textColor" unit) + (req "department" unit) + (req "faculty" unit) + (req "eventCategory" string)) + (obj7 + (req "sites" @@ list string) + (req "modules" @@ option (list string)) + (req "registerStatus" unit) + (req "studentMark" unit) + (req "custom1" unit) + (req "custom2" unit) + (req "custom3" unit)))) + +let decode enc s = + let toks = + match s with + | "" -> `O [] + | s -> Ezjsonm.from_string s in + J.destruct enc toks + +let body = + let parameters = "start=2020-09-01&end=2020-10-01&resType=103&calView=month&federationIds[]=IINS9CMA&colourScheme=3" in + let body = Cohttp_lwt.Body.of_string parameters and + headers = Header.init_with "Content-Type" "application/x-www-form-urlencoded" in + Client.post ~body ~headers (Uri.of_string "https://edt.univ-tlse3.fr/calendar2/Home/GetCalendarData") >>= fun (_resp, body) -> + Cohttp_lwt.Body.to_string body + let () = - print_endline "hello, world" + let body = Lwt_main.run body in + List.iter (fun {start; stop; description; category; place} -> + Printf.printf "%s\n%s\n%s\n%s\n%s\n\n" start stop description category place) + @@ decode (J.list encoding) body |