From 43858e572920b7fe9654ba6813f14cbf9f908baf Mon Sep 17 00:00:00 2001 From: Aaron Power Date: Mon, 12 Feb 2018 00:15:35 +0000 Subject: [PATCH] reformatted example and made it the README example. --- README.md | 57 ++++++++++++++++++++++++++++----------- examples/print_profile.rs | 6 +++-- 2 files changed, 46 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index d5b23c4..94b9a66 100644 --- a/README.md +++ b/README.md @@ -6,30 +6,57 @@ A wrapper around the [API](https://github.com/tootsuite/mastodon/blob/master/doc ```rust extern crate mammut; -use mammut::Registration; -use mammut::apps::{AppBuilder, Scope}; +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() { - run().unwrap(); + 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 run() -> mammut::Result<()> { +fn register() -> Mastodon { let app = AppBuilder { - client_name: "mammut_test", + client_name: "mammut-examples", redirect_uris: "urn:ietf:wg:oauth:2.0:oob", scopes: Scopes::Read, - website: None, + website: Some("https://github.com/Aaronepower/mammut"), }; let mut registration = Registration::new("https://mastodon.social"); - registration.register(app)?; - let url = registration.authorise()?; - // Here you now need to open the url in the browser - // And handle a the redirect url coming back with the code. - let code = String::from("RETURNED_FROM_BROWSER"); - let mastodon = registration.create_access_token(code)?; - - println!("{:?}", mastodon.get_home_timeline()?); - Ok(()) + 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_profile.rs b/examples/print_profile.rs index 315a11e..3b1cebd 100644 --- a/examples/print_profile.rs +++ b/examples/print_profile.rs @@ -1,11 +1,13 @@ extern crate mammut; extern crate toml; -use mammut::{Data, Mastodon, Registration}; -use mammut::apps::{AppBuilder, Scopes}; + 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) => {