#![cfg_attr( all(not(debug_assertions), target_os = "windows"), windows_subsystem = "windows" )] use enumset::EnumSet; use theseus::prelude::*; use theseus::worlds::get_recent_worlds; // A simple Rust implementation of the authentication run // 1) call the authenticate_begin_flow() function to get the URL to open (like you would in the frontend) // 2) open the URL in a browser // 3) call the authenticate_await_complete_flow() function to get the credentials (like you would in the frontend) pub async fn authenticate_run() -> theseus::Result { println!("A browser window will now open, follow the login flow there."); let login = minecraft_auth::begin_login().await?; println!("Open URL {} in a browser", login.auth_request_uri.as_str()); println!("Please enter URL code: "); let mut input = String::new(); std::io::stdin() .read_line(&mut input) .expect("error: unable to read user input"); println!("You entered: {}", input.trim()); let credentials = minecraft_auth::finish_login(&input, login).await?; println!( "Logged in user {}.", credentials.maybe_online_profile().await.name ); Ok(credentials) } #[tokio::main] async fn main() -> theseus::Result<()> { println!("Starting."); let _log_guard = theseus::start_logger(); // Initialize state State::init().await?; let worlds = get_recent_worlds(4, EnumSet::all()).await?; for world in worlds { println!( "World: {:?}/{:?} played at {:?}: {:#?}", world.profile, world.world.name, world.world.last_played, world.world.details ); } Ok(()) }