diff --git a/examples/follow_profile.rs b/examples/follow_profile.rs new file mode 100644 index 0000000..9f48ff8 --- /dev/null +++ b/examples/follow_profile.rs @@ -0,0 +1,13 @@ +mod register; + +use std::error; + +fn main() -> Result<(), Box> { + let mastodon = register::get_mastodon_data()?; + let input = register::read_line("Enter the account id you'd like to follow: ")?; + let new_follow = mastodon.follow(input.trim().parse()?)?; + + println!("{:#?}", new_follow); + + Ok(()) +} diff --git a/examples/print_profile.rs b/examples/print_profile.rs deleted file mode 100644 index 3b1cebd..0000000 --- a/examples/print_profile.rs +++ /dev/null @@ -1,54 +0,0 @@ -extern crate mammut; -extern crate toml; - -use std::io; -use std::fs::File; -use std::io::prelude::*; - -use mammut::{Data, Mastodon, Registration}; -use mammut::apps::{AppBuilder, Scopes}; - -fn main() { - let mastodon = match File::open("mastodon-data.toml") { - Ok(mut file) => { - let mut config = String::new(); - file.read_to_string(&mut config).unwrap(); - let data: Data = toml::from_str(&config).unwrap(); - Mastodon::from_data(data) - }, - Err(_) => register(), - }; - - let you = mastodon.verify_credentials().unwrap(); - - println!("{:#?}", you); -} - -fn register() -> Mastodon { - let app = AppBuilder { - client_name: "mammut-examples", - redirect_uris: "urn:ietf:wg:oauth:2.0:oob", - scopes: Scopes::Read, - website: Some("https://github.com/Aaronepower/mammut"), - }; - - let mut registration = Registration::new("https://mastodon.social"); - registration.register(app).unwrap();; - let url = registration.authorise().unwrap(); - - println!("Click this link to authorize on Mastodon: {}", url); - println!("Paste the returned authorization code: "); - - let mut input = String::new(); - io::stdin().read_line(&mut input).unwrap(); - - let code = input.trim(); - let mastodon = registration.create_access_token(code.to_string()).unwrap(); - - // Save app data for using on the next run. - let toml = toml::to_string(&*mastodon).unwrap(); - let mut file = File::create("mastodon-data.toml").unwrap(); - file.write_all(toml.as_bytes()).unwrap(); - - mastodon -} diff --git a/examples/print_your_profile.rs b/examples/print_your_profile.rs new file mode 100644 index 0000000..f1b3bae --- /dev/null +++ b/examples/print_your_profile.rs @@ -0,0 +1,12 @@ +mod register; + +use std::error; + +fn main() -> Result<(), Box> { + let mastodon = register::get_mastodon_data()?; + let you = mastodon.verify_credentials()?; + + println!("{:#?}", you); + + Ok(()) +} diff --git a/examples/register.rs b/examples/register.rs new file mode 100644 index 0000000..4c3d426 --- /dev/null +++ b/examples/register.rs @@ -0,0 +1,68 @@ +extern crate mammut; +extern crate toml; + +use std::{ + error::Error, + fs, + io, +}; + +use self::mammut::{ + apps::{ + AppBuilder, + Scopes + }, + Mastodon, + Registration +}; + +#[allow(dead_code)] +fn main() -> Result<(), Box> { + register()?; + Ok(()) +} + + +#[allow(dead_code)] +pub fn get_mastodon_data() -> Result> { + if let Ok(config) = fs::read_to_string("mastodon-data.toml") { + Ok(Mastodon::from_data(toml::from_str(&config)?)) + } else { + register() + } +} + +pub fn register() -> Result> { + let app = AppBuilder { + client_name: "mammut-examples", + redirect_uris: "urn:ietf:wg:oauth:2.0:oob", + scopes: Scopes::Read, + website: Some("https://github.com/Aaronepower/mammut"), + }; + + let mut registration = Registration::new("https://mastodon.social"); + registration.register(app)?; + let url = registration.authorise()?; + + println!("Click this link to authorize on Mastodon: {}", url); + let input = read_line("Paste the returned authorization code: ")?; + + let code = input.trim(); + let mastodon = registration.create_access_token(code.to_string())?; + + // Save app data for using on the next run. + let toml = toml::to_string(&*mastodon)?; + fs::write("mastodon-data.toml", toml.as_bytes())?; + + Ok(mastodon) +} + +pub fn read_line(message: &str) -> Result> { + println!("{}", message); + + let mut input = String::new(); + io::stdin().read_line(&mut input)?; + + Ok(input) +} + diff --git a/examples/search.rs b/examples/search.rs new file mode 100644 index 0000000..bb772af --- /dev/null +++ b/examples/search.rs @@ -0,0 +1,13 @@ +mod register; + +use std::error; + +fn main() -> Result<(), Box> { + let mastodon = register::get_mastodon_data()?; + let input = register::read_line("Enter the term you'd like to search: ")?; + let result = mastodon.search_accounts(&input, None, true)?; + + println!("{:#?}", result.initial_items); + + Ok(()) +} diff --git a/src/apps.rs b/src/apps.rs index 8ac8dcd..61cae43 100644 --- a/src/apps.rs +++ b/src/apps.rs @@ -2,6 +2,8 @@ use std::fmt; /// Builder struct for defining your application. /// ``` +/// use mammut::apps::{AppBuilder, Scopes}; +/// /// let app = AppBuilder { /// client_name: "mammut_test", /// redirect_uris: "urn:ietf:wg:oauth:2.0:oob", diff --git a/src/lib.rs b/src/lib.rs index 507d0ee..0e40828 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -92,9 +92,8 @@ macro_rules! methods { macro_rules! paged_routes { (($method:ident) $name:ident: $url:expr => $ret:ty, $($rest:tt)*) => { - /// Equivalent to `/api/v1/ + /// Equivalent to /api/v1/ #[doc = $url] - /// ` /// #[doc = "# Errors"] /// If `access_token` is not set. @@ -116,9 +115,8 @@ macro_rules! paged_routes { macro_rules! route { ((post multipart ($($param:ident: $typ:ty,)*)) $name:ident: $url:expr => $ret:ty, $($rest:tt)*) => { - /// Equivalent to `/api/v1/ + /// Equivalent to /api/v1/ #[doc = $url] - /// ` /// #[doc = "# Errors"] /// If `access_token` is not set. @@ -150,9 +148,8 @@ macro_rules! route { }; (($method:ident ($($param:ident: $typ:ty,)*)) $name:ident: $url:expr => $ret:ty, $($rest:tt)*) => { - /// Equivalent to `/api/v1/ + /// Equivalent to /api/v1/ #[doc = $url] - /// ` /// #[doc = "# Errors"] /// If `access_token` is not set. @@ -184,9 +181,8 @@ macro_rules! route { }; (($method:ident) $name:ident: $url:expr => $ret:ty, $($rest:tt)*) => { - /// Equivalent to `/api/v1/ + /// Equivalent to /api/v1/ #[doc = $url] - /// ` /// #[doc = "# Errors"] /// If `access_token` is not set. @@ -204,9 +200,8 @@ macro_rules! route_id { ($(($method:ident) $name:ident: $url:expr => $ret:ty,)*) => { $( - /// Equivalent to `/api/v1/ + /// Equivalent to /api/v1/ #[doc = $url] - /// ` /// #[doc = "# Errors"] /// If `access_token` is not set. @@ -220,9 +215,8 @@ macro_rules! route_id { macro_rules! paged_routes_with_id { (($method:ident) $name:ident: $url:expr => $ret:ty, $($rest:tt)*) => { - /// Equivalent to `/api/v1/ + /// Equivalent to /api/v1/ #[doc = $url] - /// ` /// #[doc = "# Errors"] /// If `access_token` is not set. @@ -415,8 +409,8 @@ impl Mastodon { route_id! { (get) get_account: "accounts/{}" => Account, - (get) follow: "accounts/{}/follow" => Account, - (get) unfollow: "accounts/{}/unfollow" => Account, + (post) follow: "accounts/{}/follow" => Account, + (post) unfollow: "accounts/{}/unfollow" => Account, (get) block: "accounts/{}/block" => Account, (get) unblock: "accounts/{}/unblock" => Account, (get) mute: "accounts/{}/mute" => Account, diff --git a/src/registration.rs b/src/registration.rs index dbca493..08ed2d6 100644 --- a/src/registration.rs +++ b/src/registration.rs @@ -29,6 +29,8 @@ struct AccessToken { impl Registration { /// Construct a new registration process to the instance of the `base` url. /// ``` + /// use mammut::registration::Registration; + /// /// let registration = Registration::new("https://mastodon.social"); /// ``` pub fn new>(base: I) -> Self { diff --git a/src/status_builder.rs b/src/status_builder.rs index ff8845c..c35cc31 100644 --- a/src/status_builder.rs +++ b/src/status_builder.rs @@ -41,6 +41,8 @@ impl StatusBuilder { /// Create a new status with text. /// ``` + /// use mammut::status_builder::StatusBuilder; + /// /// let status = StatusBuilder::new("Hello World!".into()); /// ``` pub fn new(status: String) -> Self {