egs-api 0.14.0

Interface to the Epic Games API
Documentation
#[path = "common.rs"]
mod common;

use egs_api::EpicGames;
use std::io;

#[tokio::main]
async fn main() {
    env_logger::init();
    let mut egs = EpicGames::new();

    println!("=== Authentication Example ===\n");

    let args: Vec<String> = std::env::args().collect();
    let use_sid = args.iter().any(|a| a == "--sid");

    if use_sid {
        println!("SID auth mode. Enter your Epic session ID (SID):");
        let mut sid = String::new();
        io::stdin().read_line(&mut sid).unwrap();
        let sid = sid.trim();

        match egs.auth_sid(sid).await {
            Ok(true) => {
                println!("SID auth succeeded!");
                common::save_token(&egs);
            }
            Ok(false) => {
                eprintln!("SID auth returned false");
                std::process::exit(1);
            }
            Err(e) => {
                eprintln!("SID auth failed: {:?}", e);
                std::process::exit(1);
            }
        }
    } else if !common::login_or_restore(&mut egs).await {
        eprintln!("Authentication failed");
        std::process::exit(1);
    }

    let details = egs.user_details();
    println!(
        "\nLogged in as: {}",
        details.display_name.unwrap_or_default()
    );
    println!("Account ID: {}", details.account_id.unwrap_or_default());

    println!("\nToken saved. Run other examples without re-authenticating.");
    println!("Tip: use --sid flag to authenticate via session ID instead.\n");
}