open Zulip let () = 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 = Message.to_json message in Printf.printf "\nMessage JSON: %s\n" (match json with | `O _ -> "JSON object (serialized correctly)" | _ -> "Invalid JSON"); (* Create client (mock) *) let client = Client.create () auth in Printf.printf "\nCreated mock 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" (Error.message err)); Printf.printf "\nLibrary is working correctly!\n"