|
|
@ -6,30 +6,57 @@ A wrapper around the [API](https://github.com/tootsuite/mastodon/blob/master/doc |
|
|
|
|
|
|
|
|
|
|
|
```rust |
|
|
|
```rust |
|
|
|
extern crate mammut; |
|
|
|
extern crate mammut; |
|
|
|
use mammut::Registration; |
|
|
|
extern crate toml; |
|
|
|
use mammut::apps::{AppBuilder, Scope}; |
|
|
|
|
|
|
|
|
|
|
|
use std::io; |
|
|
|
|
|
|
|
use std::fs::File; |
|
|
|
|
|
|
|
use std::io::prelude::*; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
use mammut::{Data, Mastodon, Registration}; |
|
|
|
|
|
|
|
use mammut::apps::{AppBuilder, Scopes}; |
|
|
|
|
|
|
|
|
|
|
|
fn main() { |
|
|
|
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 { |
|
|
|
let app = AppBuilder { |
|
|
|
client_name: "mammut_test", |
|
|
|
client_name: "mammut-examples", |
|
|
|
redirect_uris: "urn:ietf:wg:oauth:2.0:oob", |
|
|
|
redirect_uris: "urn:ietf:wg:oauth:2.0:oob", |
|
|
|
scopes: Scopes::Read, |
|
|
|
scopes: Scopes::Read, |
|
|
|
website: None, |
|
|
|
website: Some("https://github.com/Aaronepower/mammut"), |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
let mut registration = Registration::new("https://mastodon.social"); |
|
|
|
let mut registration = Registration::new("https://mastodon.social"); |
|
|
|
registration.register(app)?; |
|
|
|
registration.register(app).unwrap();; |
|
|
|
let url = registration.authorise()?; |
|
|
|
let url = registration.authorise().unwrap(); |
|
|
|
// Here you now need to open the url in the browser |
|
|
|
|
|
|
|
// And handle a the redirect url coming back with the code. |
|
|
|
println!("Click this link to authorize on Mastodon: {}", url); |
|
|
|
let code = String::from("RETURNED_FROM_BROWSER"); |
|
|
|
println!("Paste the returned authorization code: "); |
|
|
|
let mastodon = registration.create_access_token(code)?; |
|
|
|
|
|
|
|
|
|
|
|
let mut input = String::new(); |
|
|
|
println!("{:?}", mastodon.get_home_timeline()?); |
|
|
|
io::stdin().read_line(&mut input).unwrap(); |
|
|
|
Ok(()) |
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
|
} |
|
|
|
} |
|
|
|
``` |
|
|
|
``` |
|
|
|