use pocket::auth::PocketAuthentication;
use std::error::Error;
use std::io;
use std::time::Instant;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let consumer_key = std::env::var("POCKET_CONSUMER_KEY")?;
println!("consumer key: {}", consumer_key);
let auth = PocketAuthentication::new(&consumer_key, "rustapi:finishauth");
let state = Some(format!("{:?}", Instant::now()));
let code = auth.request(state.as_deref()).await?;
let url = auth.authorize_url(&code);
println!(
"Follow auth URL to provide access and press enter when finished: {}",
url
);
let _ = io::stdin().read_line(&mut String::new());
let user = auth.authorize(&code, state.as_deref()).await?;
println!("username: {}", user.username);
println!("access token: {:?}", user.access_token);
Ok(())
}