chatwork 0.1.0

Chatwork API client.
Documentation
crate::derive_service! {
    pub struct Service {
        pub(super) inner: crate::Client,
        pub(super) room_id: i64,
    }
}

impl Service {
    pub async fn get(&self) -> crate::Result<Link> {
        self.inner
            .get(crate::path_and_query!("/rooms/{room_id}/link", room_id = self.room_id))
            .await
    }

    pub async fn create(&self, create: &Create<'_>) -> crate::Result<Link> {
        self.inner
            .post(crate::path_and_query!("/rooms/{room_id}/link", room_id = self.room_id), create)
            .await
    }

    pub async fn update(&self, update: &Update<'_>) -> crate::Result<Link> {
        self.inner
            .put(
                crate::path_and_query!("/rooms/{room_id}/link", room_id = self.room_id),
                Some(update),
            )
            .await
    }

    pub async fn delete(&self) -> crate::Result<Visibility> {
        self.inner
            .delete(
                crate::path_and_query!("/rooms/{room_id}/link", room_id = self.room_id),
                Option::<&()>::None,
            )
            .await
    }
}

crate::derive_query_or_form! {
    pub struct Create<'a> {
        pub code: Option<&'a str>,
        pub description: Option<&'a str>,
        #[serde(serialize_with = "crate::serde::opt_bool_to_u8")]
        pub need_acceptance: Option<bool>,
    }
}

crate::derive_query_or_form! {
    pub struct Update<'a> {
        pub code: Option<&'a str>,
        pub description: Option<&'a str>,
        #[serde(serialize_with = "crate::serde::opt_bool_to_u8")]
        pub need_acceptance: Option<bool>,
    }
}

crate::derive_model! {
    pub struct Link {
        pub description: Option<String>,
        pub need_acceptance: Option<bool>,
        pub public: bool,
        pub url: Option<String>,
    }
}

crate::derive_model! {
    pub struct Visibility {
        pub public: bool,
    }
}