diff --git a/examples/follows_me.rs b/examples/follows_me.rs new file mode 100755 index 0000000..c423b1c --- /dev/null +++ b/examples/follows_me.rs @@ -0,0 +1,25 @@ +#![cfg_attr(not(feature = "toml"), allow(dead_code))] +#![cfg_attr(not(feature = "toml"), allow(unused_imports))] +mod register; + +use register::MastodonClient; +use std::error; + +#[cfg(feature = "toml")] +fn main() -> Result<(), Box> { + let mastodon = register::get_mastodon_data()?; + for account in mastodon.follows_me()?.items_iter() { + println!("{}", account.acct); + } + + Ok(()) +} + +#[cfg(not(feature = "toml"))] +fn main() { + println!( + "examples require the `toml` feature, run this command for this example:\n\ncargo run \ + --example print_your_profile --features toml\n" + ); +} + diff --git a/src/lib.rs b/src/lib.rs index 5aaceac..b76a59c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -407,6 +407,18 @@ impl MastodonClient for Mastodon { deserialise(response) } + + /// Get all accounts that follow the authenticated user + fn follows_me(&self) -> Result> { + let me = self.verify_credentials()?; + Ok(self.followers(&me.id)?) + } + + /// Get all accounts that the authenticated user follows + fn followed_by_me(&self) -> Result> { + let me = self.verify_credentials()?; + Ok(self.following(&me.id)?) + } } impl ops::Deref for Mastodon { diff --git a/src/mastodon_client.rs b/src/mastodon_client.rs index ca8a98a..83a2948 100644 --- a/src/mastodon_client.rs +++ b/src/mastodon_client.rs @@ -273,4 +273,47 @@ pub trait MastodonClient { fn unendorse_user(&self, id: &str) -> Result { unimplemented!("This method was not implemented"); } + /// Shortcut for: `let me = client.verify_credentials(); client.followers()` + /// + /// ```no_run + /// # extern crate elefren; + /// # use std::error::Error; + /// # use elefren::prelude::*; + /// # fn main() -> Result<(), Box> { + /// # let data = Data { + /// # base: "".into(), + /// # client_id: "".into(), + /// # client_secret: "".into(), + /// # redirect: "".into(), + /// # token: "".into(), + /// # }; + /// # let client = Mastodon::from(data); + /// let follows_me = client.follows_me()?; + /// # Ok(()) + /// # } + fn follows_me(&self) -> Result> { + unimplemented!("This method was not implemented"); + } + /// Shortcut for + /// `let me = client.verify_credentials(); client.following(&me.id)` + /// + /// ```no_run + /// # extern crate elefren; + /// # use std::error::Error; + /// # use elefren::prelude::*; + /// # fn main() -> Result<(), Box> { + /// # let data = Data { + /// # base: "".into(), + /// # client_id: "".into(), + /// # client_secret: "".into(), + /// # redirect: "".into(), + /// # token: "".into(), + /// # }; + /// # let client = Mastodon::from(data); + /// let follows_me = client.followed_by_me()?; + /// # Ok(()) + /// # } + fn followed_by_me(&self) -> Result> { + unimplemented!("This method was not implemented"); + } }