moodle_api/core/message/
get_conversation.rs1use serde::{self, Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Debug)]
4pub struct Params {
5 #[serde(rename = "userid")]
7 pub r#userid: Option<i64>,
8 #[serde(rename = "conversationid")]
10 pub r#conversationid: Option<i64>,
11 #[serde(rename = "includecontactrequests")]
13 pub r#includecontactrequests: Option<bool>,
14 #[serde(rename = "includeprivacyinfo")]
16 pub r#includeprivacyinfo: Option<bool>,
17 #[serde(rename = "memberlimit")]
19 pub r#memberlimit: Option<i64>,
20 #[serde(rename = "memberoffset")]
22 pub r#memberoffset: Option<i64>,
23 #[serde(rename = "messagelimit")]
25 pub r#messagelimit: Option<i64>,
26 #[serde(rename = "messageoffset")]
28 pub r#messageoffset: Option<i64>,
29 #[serde(rename = "newestmessagesfirst")]
31 pub r#newestmessagesfirst: Option<bool>,
32}
33
34#[derive(Serialize, Deserialize, Debug)]
35pub struct ReturnsMembersItemContactrequestsItem {
36 #[serde(rename = "id")]
38 pub r#id: Option<i64>,
39 #[serde(rename = "userid")]
41 pub r#userid: Option<i64>,
42 #[serde(rename = "requesteduserid")]
44 pub r#requesteduserid: Option<i64>,
45 #[serde(rename = "timecreated")]
47 pub r#timecreated: Option<i64>,
48}
49
50pub type r#ReturnsMembersItemContactrequests = Vec<ReturnsMembersItemContactrequestsItem>;
52
53#[derive(Serialize, Deserialize, Debug)]
55pub struct ReturnsMembersItemConversationsItem {
56 #[serde(rename = "id")]
58 pub r#id: Option<i64>,
59 #[serde(rename = "type")]
61 pub r#type: Option<i64>,
62 #[serde(rename = "name")]
64 pub r#name: Option<String>,
65 #[serde(rename = "timecreated")]
67 pub r#timecreated: Option<i64>,
68}
69
70pub type r#ReturnsMembersItemConversations = Vec<ReturnsMembersItemConversationsItem>;
72
73#[derive(Serialize, Deserialize, Debug)]
74pub struct ReturnsMembersItem {
75 #[serde(rename = "id")]
77 pub r#id: Option<i64>,
78 #[serde(rename = "fullname")]
80 pub r#fullname: Option<String>,
81 #[serde(rename = "profileurl")]
83 pub r#profileurl: Option<String>,
84 #[serde(rename = "profileimageurl")]
86 pub r#profileimageurl: Option<String>,
87 #[serde(rename = "profileimageurlsmall")]
89 pub r#profileimageurlsmall: Option<String>,
90 #[serde(rename = "isonline")]
92 pub r#isonline: Option<bool>,
93 #[serde(rename = "showonlinestatus")]
95 pub r#showonlinestatus: Option<bool>,
96 #[serde(rename = "isblocked")]
98 pub r#isblocked: Option<bool>,
99 #[serde(rename = "iscontact")]
101 pub r#iscontact: Option<bool>,
102 #[serde(rename = "isdeleted")]
104 pub r#isdeleted: Option<bool>,
105 #[serde(rename = "canmessageevenifblocked")]
107 pub r#canmessageevenifblocked: Option<bool>,
108 #[serde(rename = "canmessage")]
110 pub r#canmessage: Option<bool>,
111 #[serde(rename = "requirescontact")]
113 pub r#requirescontact: Option<bool>,
114 #[serde(rename = "contactrequests")]
116 pub r#contactrequests: Option<r#ReturnsMembersItemContactrequests>,
117 #[serde(rename = "conversations")]
119 pub r#conversations: Option<r#ReturnsMembersItemConversations>,
120}
121
122pub type r#ReturnsMembers = Vec<ReturnsMembersItem>;
123
124#[derive(Serialize, Deserialize, Debug)]
125pub struct ReturnsMessagesItem {
126 #[serde(rename = "id")]
128 pub r#id: Option<i64>,
129 #[serde(rename = "useridfrom")]
131 pub r#useridfrom: Option<i64>,
132 #[serde(rename = "text")]
134 pub r#text: Option<String>,
135 #[serde(rename = "timecreated")]
137 pub r#timecreated: Option<i64>,
138}
139
140pub type r#ReturnsMessages = Vec<ReturnsMessagesItem>;
141
142#[derive(Serialize, Deserialize, Debug)]
143pub struct Returns {
144 #[serde(rename = "id")]
146 pub r#id: Option<i64>,
147 #[serde(rename = "name")]
149 pub r#name: Option<String>,
150 #[serde(rename = "subname")]
152 pub r#subname: Option<String>,
153 #[serde(rename = "imageurl")]
155 pub r#imageurl: Option<String>,
156 #[serde(rename = "type")]
158 pub r#type: Option<i64>,
159 #[serde(rename = "membercount")]
161 pub r#membercount: Option<i64>,
162 #[serde(rename = "ismuted")]
164 pub r#ismuted: Option<bool>,
165 #[serde(rename = "isfavourite")]
167 pub r#isfavourite: Option<bool>,
168 #[serde(rename = "isread")]
170 pub r#isread: Option<bool>,
171 #[serde(rename = "unreadcount")]
173 pub r#unreadcount: Option<i64>,
174 #[serde(rename = "members")]
175 pub r#members: Option<r#ReturnsMembers>,
176 #[serde(rename = "messages")]
177 pub r#messages: Option<r#ReturnsMessages>,
178 #[serde(rename = "candeletemessagesforallusers")]
180 pub r#candeletemessagesforallusers: Option<bool>,
181}
182
183pub async fn call<'a>(
184 client: &'a mut moodle_client::MoodleClient,
185 params: &'a mut Params,
186) -> anyhow::Result<Returns> {
187 let json = client.post("core_message_get_conversation", params).await?;
188
189 serde_json::from_value(json).map_err(|e| e.into())
190}
191
192pub async fn call_raw<'a>(
193 client: &'a mut moodle_client::MoodleClient,
194 params: &'a mut Params,
195) -> anyhow::Result<serde_json::Value> {
196 client.post("core_message_get_conversation", params).await
197}