use serde::{self, Deserialize, Serialize};
pub type r#ParamsServiceshortnames = Vec<String>;
#[derive(Serialize, Deserialize, Debug)]
pub struct Params {
#[serde(rename = "serviceshortnames")]
pub r#serviceshortnames: Option<r#ParamsServiceshortnames>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsFunctionsItem {
#[serde(rename = "name")]
pub r#name: Option<String>,
#[serde(rename = "version")]
pub r#version: Option<String>,
}
pub type r#ReturnsFunctions = Vec<ReturnsFunctionsItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsAdvancedfeaturesItem {
#[serde(rename = "name")]
pub r#name: Option<String>,
#[serde(rename = "value")]
pub r#value: Option<i64>,
}
pub type r#ReturnsAdvancedfeatures = Vec<ReturnsAdvancedfeaturesItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct Returns {
#[serde(rename = "sitename")]
pub r#sitename: Option<String>,
#[serde(rename = "username")]
pub r#username: Option<String>,
#[serde(rename = "firstname")]
pub r#firstname: Option<String>,
#[serde(rename = "lastname")]
pub r#lastname: Option<String>,
#[serde(rename = "fullname")]
pub r#fullname: Option<String>,
#[serde(rename = "lang")]
pub r#lang: Option<String>,
#[serde(rename = "userid")]
pub r#userid: Option<i64>,
#[serde(rename = "siteurl")]
pub r#siteurl: Option<String>,
#[serde(rename = "userpictureurl")]
pub r#userpictureurl: Option<String>,
#[serde(rename = "functions")]
pub r#functions: Option<r#ReturnsFunctions>,
#[serde(rename = "downloadfiles")]
pub r#downloadfiles: Option<i64>,
#[serde(rename = "uploadfiles")]
pub r#uploadfiles: Option<i64>,
#[serde(rename = "release")]
pub r#release: Option<String>,
#[serde(rename = "version")]
pub r#version: Option<String>,
#[serde(rename = "mobilecssurl")]
pub r#mobilecssurl: Option<String>,
#[serde(rename = "advancedfeatures")]
pub r#advancedfeatures: Option<r#ReturnsAdvancedfeatures>,
#[serde(rename = "usercanmanageownfiles")]
pub r#usercanmanageownfiles: Option<bool>,
#[serde(rename = "userquota")]
pub r#userquota: Option<i64>,
#[serde(rename = "usermaxuploadfilesize")]
pub r#usermaxuploadfilesize: Option<i64>,
#[serde(rename = "userhomepage")]
pub r#userhomepage: Option<i64>,
#[serde(rename = "userprivateaccesskey")]
pub r#userprivateaccesskey: Option<String>,
#[serde(rename = "siteid")]
pub r#siteid: Option<i64>,
#[serde(rename = "sitecalendartype")]
pub r#sitecalendartype: Option<String>,
#[serde(rename = "usercalendartype")]
pub r#usercalendartype: Option<String>,
#[serde(rename = "userissiteadmin")]
pub r#userissiteadmin: Option<bool>,
#[serde(rename = "theme")]
pub r#theme: Option<String>,
#[serde(rename = "limitconcurrentlogins")]
pub r#limitconcurrentlogins: Option<i64>,
#[serde(rename = "usersessionscount")]
pub r#usersessionscount: Option<i64>,
}
pub async fn call<'a>(
client: &'a mut moodle_client::MoodleClient,
params: &'a mut Params,
) -> anyhow::Result<Returns> {
let json = client.post("core_webservice_get_site_info", params).await?;
serde_json::from_value(json).map_err(|e| e.into())
}
pub async fn call_raw<'a>(
client: &'a mut moodle_client::MoodleClient,
params: &'a mut Params,
) -> anyhow::Result<serde_json::Value> {
client.post("core_webservice_get_site_info", params).await
}