diff options
| -rw-r--r-- | src/dune | 3 | ||||
| -rw-r--r-- | src/ucs.ml | 60 | 
2 files changed, 61 insertions, 2 deletions
| @@ -1,2 +1,3 @@  (executable - (name ucs)) + (name ucs) + (libraries lwt.unix cohttp-lwt-unix ezjsonm ocplib-json-typed)) @@ -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 | 
