open Zulip let () = Eio_main.run @@ fun env -> Eio.Switch.run @@ fun sw -> Printf.printf "OCaml Zulip Library Example\n"; Printf.printf "===========================\n\n"; (* Create authentication *) let auth = Auth.create ~server_url:"https://example.zulipchat.com" ~email:"bot@example.com" ~api_key:"your-api-key" in Printf.printf "Created auth for: %s\n" (Auth.email auth); Printf.printf "Server URL: %s\n" (Auth.server_url auth); (* Create a message *) let message = Message.create ~type_:`Channel ~to_:["general"] ~content:"Hello from OCaml Zulip library!" ~topic:"Test" () in Printf.printf "\nCreated message:\n"; Printf.printf "- Type: %s\n" (Message_type.to_string (Message.type_ message)); Printf.printf "- To: %s\n" (String.concat ", " (Message.to_ message)); Printf.printf "- Content: %s\n" (Message.content message); Printf.printf "- Topic: %s\n" (match Message.topic message with Some t -> t | None -> "None"); (* Test JSON serialization *) let json_str = Message.to_json_string message in Printf.printf "\nMessage JSON: %s\n" json_str; (* Create client *) let client = Client.create ~sw env auth in Printf.printf "\nCreated client\n"; (* Test basic client request *) (match Client.request client ~method_:`GET ~path:"/test" () with | Ok _ -> Printf.printf "Mock request succeeded\n" | Error err -> Printf.printf "Mock request failed: %s\n" (Zulip.error_message err)); Printf.printf "\nLibrary is working correctly!\n"