zulip-api 0.0.8

Client library for interacting with the Zulip API
Documentation
use zulip_api::client::Client;
use zulip_api::message::{Flag, MessageTo, MessageType, Operation};
use zulip_api::response::{ApiResult, Response};
use zulip_api::{send_message, update_message_flags};

#[tokio::test]
async fn test_update_message_flags() {
    env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
        .try_init()
        .ok();

    let client = Client::from_zuliprc("./tests/zuliprc").unwrap();

    let req = send_message::Request::new()
        .with_msg_type(MessageType::Channel)
        .with_topic("test topic")
        .with_to(MessageTo::channel_name("general"))
        .with_content("test message");

    let res = client.send_message(&req).await.unwrap();

    log::debug!("Send message response: {res}");

    let msg_id = res.id().unwrap();

    let messages = [msg_id];
    let req = update_message_flags::Request::new()
        .with_messages(messages.as_ref())
        .with_op(Operation::Add)
        .with_flag(Flag::Read);

    let res = client.update_message_flags(&req).await.unwrap();

    log::debug!("Update message flags (add) response: {res}");

    assert_eq!(res.result(), ApiResult::Success);

    let req = update_message_flags::Request::new()
        .with_messages(messages.as_ref())
        .with_op(Operation::Remove)
        .with_flag(Flag::Read);

    let res = client.update_message_flags(&req).await.unwrap();

    log::debug!("Update message flags (remove) response: {res}");

    assert_eq!(res.result(), ApiResult::Success);
}