(* Simple test for Zulip client with requests library *) let test_auth () = Printf.printf "Testing Zulip authentication...\n"; match Zulip.Auth.from_zuliprc ~path:"~/.zuliprc" () with | Ok auth -> Printf.printf "Successfully loaded auth:\n"; Printf.printf " Server: %s\n" (Zulip.Auth.server_url auth); Printf.printf " Email: %s\n" (Zulip.Auth.email auth); auth | Error e -> Printf.eprintf "Failed to load auth: %s\n" (Zulip.error_message e); (* Create a test auth *) Zulip.Auth.create ~server_url:"https://example.zulipchat.com" ~email:"bot@example.com" ~api_key:"test_api_key" let test_message_send env auth = Printf.printf "\nTesting message send...\n"; Eio.Switch.run @@ fun sw -> let client = Zulip.Client.create ~sw env auth in (* Create a test message *) let message = Zulip.Message.create ~type_:`Channel ~to_:["general"] ~topic:"Test Topic" ~content:"Hello from OCaml Zulip client using requests library!" () in match Zulip.Messages.send client message with | Ok response -> Printf.printf "Message sent successfully!\n"; Printf.printf "Message ID: %d\n" (Zulip.Message_response.id response) | Error e -> Printf.eprintf "Failed to send message: %s\n" (Zulip.error_message e) let test_fetch_messages env auth = Printf.printf "\nTesting message fetch...\n"; Eio.Switch.run @@ fun sw -> let client = Zulip.Client.create ~sw env auth in match Zulip.Messages.get_messages client ~num_before:5 ~num_after:0 () with | Ok json -> Printf.printf "Fetched messages successfully!\n"; (match json with | Jsont.Object (fields, _) -> let assoc = List.map (fun ((k, _), v) -> (k, v)) fields in (match List.assoc_opt "messages" assoc with | Some (Jsont.Array (messages, _)) -> Printf.printf "Got %d messages\n" (List.length messages) | _ -> Printf.printf "No messages field found\n") | _ -> Printf.printf "Unexpected JSON format\n") | Error e -> Printf.eprintf "Failed to fetch messages: %s\n" (Zulip.error_message e) let () = Printf.printf "Zulip OCaml Client Test\n"; Printf.printf "========================\n\n"; Eio_main.run @@ fun env -> (* Test authentication *) let auth = test_auth () in (* Test sending a message *) test_message_send env auth; (* Test fetching messages *) test_fetch_messages env auth; Printf.printf "\nAll tests completed!\n"