Merge pull request #61 from polyphony-chat/refactor/instance-user-connection
Replace &mut Instance with Rc<RefCell<Instance>>
This commit is contained in:
commit
e4a75a2809
|
@ -1,4 +1,7 @@
|
||||||
pub mod login {
|
pub mod login {
|
||||||
|
use std::cell::RefCell;
|
||||||
|
use std::rc::Rc;
|
||||||
|
|
||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
use serde_json::{from_str, json};
|
use serde_json::{from_str, json};
|
||||||
|
|
||||||
|
@ -7,13 +10,14 @@ pub mod login {
|
||||||
use crate::api::types::{ErrorResponse, LoginResult};
|
use crate::api::types::{ErrorResponse, LoginResult};
|
||||||
use crate::errors::InstanceServerError;
|
use crate::errors::InstanceServerError;
|
||||||
use crate::instance::Instance;
|
use crate::instance::Instance;
|
||||||
|
use crate::limit::LimitedRequester;
|
||||||
|
|
||||||
impl Instance {
|
impl Instance {
|
||||||
pub async fn login_account(
|
pub async fn login_account(
|
||||||
&mut self,
|
&mut self,
|
||||||
login_schema: &LoginSchema,
|
login_schema: &LoginSchema,
|
||||||
) -> Result<crate::api::types::User, InstanceServerError> {
|
) -> Result<crate::api::types::User, InstanceServerError> {
|
||||||
let requester = &mut self.requester;
|
let mut requester = LimitedRequester::new().await;
|
||||||
let json_schema = json!(login_schema);
|
let json_schema = json!(login_schema);
|
||||||
let client = Client::new();
|
let client = Client::new();
|
||||||
let endpoint_url = self.urls.get_api().to_string() + "/auth/login";
|
let endpoint_url = self.urls.get_api().to_string() + "/auth/login";
|
||||||
|
@ -56,7 +60,7 @@ pub mod login {
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let user = crate::api::types::User::new(
|
let user = crate::api::types::User::new(
|
||||||
self,
|
Rc::new(RefCell::new(self.clone())),
|
||||||
login_result.token,
|
login_result.token,
|
||||||
cloned_limits,
|
cloned_limits,
|
||||||
login_result.settings,
|
login_result.settings,
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
pub mod register {
|
pub mod register {
|
||||||
|
use std::{cell::RefCell, rc::Rc};
|
||||||
|
|
||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
use serde_json::{from_str, json};
|
use serde_json::{from_str, json};
|
||||||
|
|
||||||
|
@ -6,6 +8,7 @@ pub mod register {
|
||||||
api::{limits::LimitType, schemas::RegisterSchema, types::ErrorResponse, Token},
|
api::{limits::LimitType, schemas::RegisterSchema, types::ErrorResponse, Token},
|
||||||
errors::InstanceServerError,
|
errors::InstanceServerError,
|
||||||
instance::Instance,
|
instance::Instance,
|
||||||
|
limit::LimitedRequester,
|
||||||
};
|
};
|
||||||
|
|
||||||
impl Instance {
|
impl Instance {
|
||||||
|
@ -21,7 +24,7 @@ pub mod register {
|
||||||
register_schema: &RegisterSchema,
|
register_schema: &RegisterSchema,
|
||||||
) -> Result<crate::api::types::User, InstanceServerError> {
|
) -> Result<crate::api::types::User, InstanceServerError> {
|
||||||
let json_schema = json!(register_schema);
|
let json_schema = json!(register_schema);
|
||||||
let limited_requester = &mut self.requester;
|
let mut limited_requester = LimitedRequester::new().await;
|
||||||
let client = Client::new();
|
let client = Client::new();
|
||||||
let endpoint_url = self.urls.get_api().to_string() + "/auth/register";
|
let endpoint_url = self.urls.get_api().to_string() + "/auth/register";
|
||||||
let request_builder = client.post(endpoint_url).body(json_schema.to_string());
|
let request_builder = client.post(endpoint_url).body(json_schema.to_string());
|
||||||
|
@ -67,7 +70,7 @@ pub mod register {
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let user: crate::api::types::User = crate::api::types::User::new(
|
let user: crate::api::types::User = crate::api::types::User::new(
|
||||||
self,
|
Rc::new(RefCell::new(self.clone())),
|
||||||
token.clone(),
|
token.clone(),
|
||||||
cloned_limits,
|
cloned_limits,
|
||||||
settings,
|
settings,
|
||||||
|
@ -93,9 +96,7 @@ mod test {
|
||||||
"http://localhost:3001".to_string(),
|
"http://localhost:3001".to_string(),
|
||||||
);
|
);
|
||||||
let limited_requester = LimitedRequester::new().await;
|
let limited_requester = LimitedRequester::new().await;
|
||||||
let mut test_instance = Instance::new(urls.clone(), limited_requester)
|
let mut test_instance = Instance::new(urls.clone()).await.unwrap();
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
let reg = RegisterSchema::new(
|
let reg = RegisterSchema::new(
|
||||||
AuthUsername::new("Hiiii".to_string()).unwrap(),
|
AuthUsername::new("Hiiii".to_string()).unwrap(),
|
||||||
None,
|
None,
|
||||||
|
|
|
@ -4,6 +4,7 @@ pub mod messages {
|
||||||
use reqwest::{multipart, Client};
|
use reqwest::{multipart, Client};
|
||||||
use serde_json::to_string;
|
use serde_json::to_string;
|
||||||
|
|
||||||
|
use crate::api::limits::Limits;
|
||||||
use crate::api::types::{Message, PartialDiscordFileAttachment, User};
|
use crate::api::types::{Message, PartialDiscordFileAttachment, User};
|
||||||
use crate::limit::LimitedRequester;
|
use crate::limit::LimitedRequester;
|
||||||
|
|
||||||
|
@ -20,16 +21,15 @@ pub mod messages {
|
||||||
* [`InstanceServerError`] - If the message cannot be sent.
|
* [`InstanceServerError`] - If the message cannot be sent.
|
||||||
*/
|
*/
|
||||||
pub async fn send<'a>(
|
pub async fn send<'a>(
|
||||||
url_api: &String,
|
url_api: String,
|
||||||
channel_id: &String,
|
channel_id: String,
|
||||||
message: &mut crate::api::schemas::MessageSendSchema,
|
message: &mut crate::api::schemas::MessageSendSchema,
|
||||||
files: Option<Vec<PartialDiscordFileAttachment>>,
|
files: Option<Vec<PartialDiscordFileAttachment>>,
|
||||||
token: &String,
|
token: String,
|
||||||
user: &mut User<'a>,
|
limits_user: &mut Limits,
|
||||||
|
limits_instance: &mut Limits,
|
||||||
) -> Result<reqwest::Response, crate::errors::InstanceServerError> {
|
) -> Result<reqwest::Response, crate::errors::InstanceServerError> {
|
||||||
let mut requester = LimitedRequester::new().await;
|
let mut requester = LimitedRequester::new().await;
|
||||||
let user_rate_limits = &mut user.limits;
|
|
||||||
let instance_rate_limits = &mut user.belongs_to.limits;
|
|
||||||
|
|
||||||
if files.is_none() {
|
if files.is_none() {
|
||||||
let message_request = Client::new()
|
let message_request = Client::new()
|
||||||
|
@ -40,8 +40,8 @@ pub mod messages {
|
||||||
.send_request(
|
.send_request(
|
||||||
message_request,
|
message_request,
|
||||||
crate::api::limits::LimitType::Channel,
|
crate::api::limits::LimitType::Channel,
|
||||||
instance_rate_limits,
|
limits_instance,
|
||||||
user_rate_limits,
|
limits_user,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
} else {
|
} else {
|
||||||
|
@ -83,29 +83,31 @@ pub mod messages {
|
||||||
.send_request(
|
.send_request(
|
||||||
message_request,
|
message_request,
|
||||||
crate::api::limits::LimitType::Channel,
|
crate::api::limits::LimitType::Channel,
|
||||||
instance_rate_limits,
|
limits_instance,
|
||||||
user_rate_limits,
|
limits_user,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> User<'a> {
|
impl User {
|
||||||
pub async fn send_message(
|
pub async fn send_message(
|
||||||
&mut self,
|
&mut self,
|
||||||
message: &mut crate::api::schemas::MessageSendSchema,
|
message: &mut crate::api::schemas::MessageSendSchema,
|
||||||
channel_id: &String,
|
channel_id: String,
|
||||||
files: Option<Vec<PartialDiscordFileAttachment>>,
|
files: Option<Vec<PartialDiscordFileAttachment>>,
|
||||||
) -> Result<reqwest::Response, crate::errors::InstanceServerError> {
|
) -> Result<reqwest::Response, crate::errors::InstanceServerError> {
|
||||||
let token = self.token().clone();
|
let token = self.token().clone();
|
||||||
|
let mut belongs_to = self.belongs_to.borrow_mut();
|
||||||
Message::send(
|
Message::send(
|
||||||
&self.belongs_to.urls.get_api().to_string(),
|
belongs_to.urls.get_api().to_string(),
|
||||||
channel_id,
|
channel_id,
|
||||||
message,
|
message,
|
||||||
files,
|
files,
|
||||||
&token,
|
token,
|
||||||
self,
|
&mut self.limits,
|
||||||
|
&mut belongs_to.limits,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
@ -120,9 +122,9 @@ mod test {
|
||||||
limit::LimitedRequester,
|
limit::LimitedRequester,
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::fs::File;
|
|
||||||
use std::io::BufReader;
|
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
|
use std::{cell::RefCell, fs::File};
|
||||||
|
use std::{io::BufReader, rc::Rc};
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn send_message() {
|
async fn send_message() {
|
||||||
|
@ -139,14 +141,11 @@ mod test {
|
||||||
None,
|
None,
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
let mut instance = Instance::new(
|
let mut instance = Instance::new(crate::URLBundle {
|
||||||
crate::URLBundle {
|
|
||||||
api: "http://localhost:3001/api".to_string(),
|
api: "http://localhost:3001/api".to_string(),
|
||||||
wss: "ws://localhost:3001/".to_string(),
|
wss: "ws://localhost:3001/".to_string(),
|
||||||
cdn: "http://localhost:3001".to_string(),
|
cdn: "http://localhost:3001".to_string(),
|
||||||
},
|
})
|
||||||
LimitedRequester::new().await,
|
|
||||||
)
|
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let login_schema: LoginSchema = LoginSchema::new(
|
let login_schema: LoginSchema = LoginSchema::new(
|
||||||
|
@ -163,9 +162,15 @@ mod test {
|
||||||
println!("TOKEN: {}", token);
|
println!("TOKEN: {}", token);
|
||||||
let settings = login_result.settings;
|
let settings = login_result.settings;
|
||||||
let limits = instance.limits.clone();
|
let limits = instance.limits.clone();
|
||||||
let mut user = crate::api::types::User::new(&mut instance, token, limits, settings, None);
|
let mut user = crate::api::types::User::new(
|
||||||
|
Rc::new(RefCell::new(instance)),
|
||||||
|
token,
|
||||||
|
limits,
|
||||||
|
settings,
|
||||||
|
None,
|
||||||
|
);
|
||||||
let _ = user
|
let _ = user
|
||||||
.send_message(&mut message, &channel_id, None)
|
.send_message(&mut message, channel_id, None)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
@ -208,14 +213,11 @@ mod test {
|
||||||
None,
|
None,
|
||||||
Some(vec![attachment.clone()]),
|
Some(vec![attachment.clone()]),
|
||||||
);
|
);
|
||||||
let mut instance = Instance::new(
|
let mut instance = Instance::new(crate::URLBundle {
|
||||||
crate::URLBundle {
|
|
||||||
api: "http://localhost:3001/api".to_string(),
|
api: "http://localhost:3001/api".to_string(),
|
||||||
wss: "ws://localhost:3001/".to_string(),
|
wss: "ws://localhost:3001/".to_string(),
|
||||||
cdn: "http://localhost:3001".to_string(),
|
cdn: "http://localhost:3001".to_string(),
|
||||||
},
|
})
|
||||||
LimitedRequester::new().await,
|
|
||||||
)
|
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let login_schema: LoginSchema = LoginSchema::new(
|
let login_schema: LoginSchema = LoginSchema::new(
|
||||||
|
@ -231,11 +233,17 @@ mod test {
|
||||||
let token = login_result.token;
|
let token = login_result.token;
|
||||||
let settings = login_result.settings;
|
let settings = login_result.settings;
|
||||||
let limits = instance.limits.clone();
|
let limits = instance.limits.clone();
|
||||||
let mut user = crate::api::types::User::new(&mut instance, token, limits, settings, None);
|
let mut user = crate::api::types::User::new(
|
||||||
|
Rc::new(RefCell::new(instance)),
|
||||||
|
token,
|
||||||
|
limits,
|
||||||
|
settings,
|
||||||
|
None,
|
||||||
|
);
|
||||||
let vec_attach = vec![attachment.clone()];
|
let vec_attach = vec![attachment.clone()];
|
||||||
let _arg = Some(&vec_attach);
|
let _arg = Some(&vec_attach);
|
||||||
let response = user
|
let response = user
|
||||||
.send_message(&mut message, &channel_id, Some(vec![attachment.clone()]))
|
.send_message(&mut message, channel_id, Some(vec![attachment.clone()]))
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
println!("[Response:] {}", response.text().await.unwrap());
|
println!("[Response:] {}", response.text().await.unwrap());
|
||||||
|
|
|
@ -35,13 +35,13 @@ impl<'a> types::Guild {
|
||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
pub async fn create(
|
pub async fn create(
|
||||||
user: &mut types::User<'a>,
|
user: &mut types::User,
|
||||||
url_api: &str,
|
url_api: &str,
|
||||||
guild_create_schema: schemas::GuildCreateSchema,
|
guild_create_schema: schemas::GuildCreateSchema,
|
||||||
) -> Result<String, crate::errors::InstanceServerError> {
|
) -> Result<String, crate::errors::InstanceServerError> {
|
||||||
let url = format!("{}/guilds/", url_api);
|
let url = format!("{}/guilds/", url_api);
|
||||||
let limits_user = user.limits.get_as_mut();
|
let limits_user = user.limits.get_as_mut();
|
||||||
let limits_instance = &mut user.belongs_to.limits;
|
let limits_instance = &mut user.belongs_to.borrow_mut().limits;
|
||||||
let request = reqwest::Client::new()
|
let request = reqwest::Client::new()
|
||||||
.post(url.clone())
|
.post(url.clone())
|
||||||
.bearer_auth(user.token.clone())
|
.bearer_auth(user.token.clone())
|
||||||
|
@ -88,13 +88,13 @@ impl<'a> types::Guild {
|
||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
pub async fn delete(
|
pub async fn delete(
|
||||||
user: &mut types::User<'a>,
|
user: &mut types::User,
|
||||||
url_api: &str,
|
url_api: &str,
|
||||||
guild_id: String,
|
guild_id: String,
|
||||||
) -> Option<InstanceServerError> {
|
) -> Option<InstanceServerError> {
|
||||||
let url = format!("{}/guilds/{}/delete/", url_api, guild_id);
|
let url = format!("{}/guilds/{}/delete/", url_api, guild_id);
|
||||||
let limits_user = user.limits.get_as_mut();
|
let limits_user = user.limits.get_as_mut();
|
||||||
let limits_instance = &mut user.belongs_to.limits;
|
let limits_instance = &mut user.belongs_to.borrow_mut().limits;
|
||||||
let request = reqwest::Client::new()
|
let request = reqwest::Client::new()
|
||||||
.post(url.clone())
|
.post(url.clone())
|
||||||
.bearer_auth(user.token.clone());
|
.bearer_auth(user.token.clone());
|
||||||
|
@ -123,14 +123,11 @@ mod test {
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn guild_creation_deletion() {
|
async fn guild_creation_deletion() {
|
||||||
let mut instance = Instance::new(
|
let mut instance = Instance::new(crate::URLBundle {
|
||||||
crate::URLBundle {
|
|
||||||
api: "http://localhost:3001/api".to_string(),
|
api: "http://localhost:3001/api".to_string(),
|
||||||
wss: "ws://localhost:3001/".to_string(),
|
wss: "ws://localhost:3001/".to_string(),
|
||||||
cdn: "http://localhost:3001".to_string(),
|
cdn: "http://localhost:3001".to_string(),
|
||||||
},
|
})
|
||||||
crate::limit::LimitedRequester::new().await,
|
|
||||||
)
|
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let login_schema: schemas::LoginSchema = schemas::LoginSchema::new(
|
let login_schema: schemas::LoginSchema = schemas::LoginSchema::new(
|
||||||
|
|
|
@ -47,9 +47,7 @@ mod instance_policies_schema_test {
|
||||||
"http://localhost:3001".to_string(),
|
"http://localhost:3001".to_string(),
|
||||||
);
|
);
|
||||||
let limited_requester = LimitedRequester::new().await;
|
let limited_requester = LimitedRequester::new().await;
|
||||||
let test_instance = Instance::new(urls.clone(), limited_requester)
|
let test_instance = Instance::new(urls.clone()).await.unwrap();
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let _schema = test_instance.instance_policies_schema().await.unwrap();
|
let _schema = test_instance.instance_policies_schema().await.unwrap();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,8 @@ https://discord.com/developers/docs .
|
||||||
I do not feel like re-documenting all of this, as everything is already perfectly explained there.
|
I do not feel like re-documenting all of this, as everything is already perfectly explained there.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use std::{cell::RefCell, rc::Rc};
|
||||||
|
|
||||||
use chrono::{DateTime, Utc};
|
use chrono::{DateTime, Utc};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_json::from_value;
|
use serde_json::from_value;
|
||||||
|
@ -347,19 +349,15 @@ pub struct UserObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct User<'a> {
|
pub struct User {
|
||||||
pub belongs_to: &'a mut Instance,
|
pub belongs_to: Rc<RefCell<Instance>>,
|
||||||
pub token: String,
|
pub token: String,
|
||||||
pub limits: Limits,
|
pub limits: Limits,
|
||||||
pub settings: UserSettings,
|
pub settings: UserSettings,
|
||||||
pub object: Option<UserObject>,
|
pub object: Option<UserObject>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> User<'a> {
|
impl User {
|
||||||
pub fn belongs_to(&mut self) -> &mut Instance {
|
|
||||||
self.belongs_to
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn token(&self) -> String {
|
pub fn token(&self) -> String {
|
||||||
self.token.clone()
|
self.token.clone()
|
||||||
}
|
}
|
||||||
|
@ -369,12 +367,12 @@ impl<'a> User<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new(
|
pub fn new(
|
||||||
belongs_to: &'a mut Instance,
|
belongs_to: Rc<RefCell<Instance>>,
|
||||||
token: String,
|
token: String,
|
||||||
limits: Limits,
|
limits: Limits,
|
||||||
settings: UserSettings,
|
settings: UserSettings,
|
||||||
object: Option<UserObject>,
|
object: Option<UserObject>,
|
||||||
) -> User<'a> {
|
) -> User {
|
||||||
User {
|
User {
|
||||||
belongs_to,
|
belongs_to,
|
||||||
token,
|
token,
|
||||||
|
|
|
@ -12,7 +12,7 @@ use crate::{
|
||||||
limit::LimitedRequester,
|
limit::LimitedRequester,
|
||||||
};
|
};
|
||||||
|
|
||||||
impl<'a> User<'a> {
|
impl User {
|
||||||
/**
|
/**
|
||||||
Get a user object by id, or get the current user.
|
Get a user object by id, or get the current user.
|
||||||
# Arguments
|
# Arguments
|
||||||
|
@ -99,7 +99,10 @@ impl<'a> User<'a> {
|
||||||
return Err(InstanceServerError::PasswordRequiredError);
|
return Err(InstanceServerError::PasswordRequiredError);
|
||||||
}
|
}
|
||||||
let request = Client::new()
|
let request = Client::new()
|
||||||
.patch(format!("{}/users/@me/", self.belongs_to.urls.get_api()))
|
.patch(format!(
|
||||||
|
"{}/users/@me/",
|
||||||
|
self.belongs_to.borrow_mut().urls.get_api()
|
||||||
|
))
|
||||||
.body(to_string(&modify_schema).unwrap())
|
.body(to_string(&modify_schema).unwrap())
|
||||||
.bearer_auth(self.token());
|
.bearer_auth(self.token());
|
||||||
let result = match LimitedRequester::new()
|
let result = match LimitedRequester::new()
|
||||||
|
@ -107,7 +110,7 @@ impl<'a> User<'a> {
|
||||||
.send_request(
|
.send_request(
|
||||||
request,
|
request,
|
||||||
crate::api::limits::LimitType::Global,
|
crate::api::limits::LimitType::Global,
|
||||||
&mut self.belongs_to.limits,
|
&mut self.belongs_to.borrow_mut().limits,
|
||||||
&mut self.limits,
|
&mut self.limits,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
|
|
|
@ -1,20 +1,17 @@
|
||||||
use crate::api::limits::Limits;
|
use crate::api::limits::Limits;
|
||||||
use crate::api::types::{InstancePolicies};
|
use crate::api::types::InstancePolicies;
|
||||||
use crate::errors::{FieldFormatError, InstanceServerError};
|
use crate::errors::{FieldFormatError, InstanceServerError};
|
||||||
use crate::limit::LimitedRequester;
|
|
||||||
use crate::URLBundle;
|
use crate::URLBundle;
|
||||||
|
|
||||||
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug, Clone)]
|
||||||
/**
|
/**
|
||||||
The [`Instance`] what you will be using to perform all sorts of actions on the Spacebar server.
|
The [`Instance`] what you will be using to perform all sorts of actions on the Spacebar server.
|
||||||
*/
|
*/
|
||||||
pub struct Instance {
|
pub struct Instance {
|
||||||
pub urls: URLBundle,
|
pub urls: URLBundle,
|
||||||
pub instance_info: InstancePolicies,
|
pub instance_info: InstancePolicies,
|
||||||
pub requester: LimitedRequester,
|
|
||||||
pub limits: Limits,
|
pub limits: Limits,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,10 +22,7 @@ impl Instance {
|
||||||
/// * `requester` - The [`LimitedRequester`] that will be used to make requests to the Spacebar server.
|
/// * `requester` - The [`LimitedRequester`] that will be used to make requests to the Spacebar server.
|
||||||
/// # Errors
|
/// # Errors
|
||||||
/// * [`InstanceError`] - If the instance cannot be created.
|
/// * [`InstanceError`] - If the instance cannot be created.
|
||||||
pub async fn new(
|
pub async fn new(urls: URLBundle) -> Result<Instance, InstanceServerError> {
|
||||||
urls: URLBundle,
|
|
||||||
requester: LimitedRequester,
|
|
||||||
) -> Result<Instance, InstanceServerError> {
|
|
||||||
let mut instance = Instance {
|
let mut instance = Instance {
|
||||||
urls: urls.clone(),
|
urls: urls.clone(),
|
||||||
instance_info: InstancePolicies::new(
|
instance_info: InstancePolicies::new(
|
||||||
|
@ -43,7 +37,6 @@ impl Instance {
|
||||||
None,
|
None,
|
||||||
),
|
),
|
||||||
limits: Limits::check_limits(urls.api).await,
|
limits: Limits::check_limits(urls.api).await,
|
||||||
requester,
|
|
||||||
};
|
};
|
||||||
instance.instance_info = match instance.instance_policies_schema().await {
|
instance.instance_info = match instance.instance_policies_schema().await {
|
||||||
Ok(schema) => schema,
|
Ok(schema) => schema,
|
||||||
|
|
Loading…
Reference in New Issue