mastodon_api\methods/
instance.rs1use crate::MastodonClient;
2use crate::error::Result;
3use crate::models::{Account, Activity, Instance, Rule};
4
5pub struct InstanceHandler<'a> {
7 client: &'a MastodonClient,
8}
9
10impl<'a> InstanceHandler<'a> {
11 pub fn new(client: &'a MastodonClient) -> Self {
13 Self { client }
14 }
15
16 pub async fn get(&self) -> Result<Instance> {
23 let url = format!("{}/api/v1/instance", self.client.base_url());
24 let req = self.client.http_client().get(&url);
25 self.client.send(req).await
26 }
27
28 pub async fn peers(&self) -> Result<Vec<String>> {
35 let url = format!("{}/api/v1/instance/peers", self.client.base_url());
36 let req = self.client.http_client().get(&url);
37 self.client.send(req).await
38 }
39
40 pub async fn activity(&self) -> Result<Vec<Activity>> {
47 let url = format!("{}/api/v1/instance/activity", self.client.base_url());
48 let req = self.client.http_client().get(&url);
49 self.client.send(req).await
50 }
51
52 pub async fn rules(&self) -> Result<Vec<Rule>> {
59 let url = format!("{}/api/v1/instance/rules", self.client.base_url());
60 let req = self.client.http_client().get(&url);
61 self.client.send(req).await
62 }
63
64 pub async fn directories(&self) -> Result<Vec<Account>> {
71 let url = format!("{}/api/v1/directories", self.client.base_url());
72 let req = self.client.http_client().get(&url);
73 self.client.send(req).await
74 }
75}