canvas_lms_api/resources/
collaboration.rs1use crate::{http::Requester, pagination::PageStream};
2use serde::{Deserialize, Serialize};
3use std::sync::Arc;
4
5#[derive(Debug, Clone, Deserialize, Serialize)]
7pub struct Collaboration {
8 pub id: u64,
9 pub collaboration_type: Option<String>,
10 pub document_id: Option<String>,
11 pub user_id: Option<u64>,
12 pub context_id: Option<u64>,
13 pub context_type: Option<String>,
14 pub url: Option<String>,
15 pub created_at: Option<chrono::DateTime<chrono::Utc>>,
16 pub updated_at: Option<chrono::DateTime<chrono::Utc>>,
17 pub description: Option<String>,
18 pub title: Option<String>,
19 pub user_name: Option<String>,
20
21 #[serde(skip)]
22 pub(crate) requester: Option<Arc<Requester>>,
23}
24
25impl Collaboration {
26 fn req(&self) -> &Arc<Requester> {
27 self.requester.as_ref().expect("requester not initialized")
28 }
29
30 pub fn get_collaborators(&self) -> PageStream<Collaborator> {
35 PageStream::new(
36 Arc::clone(self.req()),
37 &format!("collaborations/{}/members", self.id),
38 vec![],
39 )
40 }
41}
42
43#[derive(Debug, Clone, Deserialize, Serialize)]
45pub struct Collaborator {
46 pub id: u64,
47 #[serde(rename = "type")]
48 pub collaborator_type: Option<String>,
49 pub name: Option<String>,
50}