irelia 0.11.1

A Rust wrapper around the native LoL APIs
Documentation
use irelia::ws::types::{Event, EventKind};
use irelia::ws::{LcuWebSocket, Subscriber};
use std::sync::atomic::{AtomicU32, Ordering};
use std::thread;
use std::time::Duration;

fn main() {
    struct EventCounter(u32);

    impl Subscriber for EventCounter {
        fn on_event(&mut self, event: &Event, _: &mut bool) {
            println!("{event:?}");
            println!("{}", self.0);
            self.0 += 1;
        }
    }

    let mut ws_client = LcuWebSocket::new();

    let id = ws_client
        .subscribe(EventKind::json_api_event(), EventCounter(0))
        .unwrap();

    static COUNTER: AtomicU32 = AtomicU32::new(0);

    let id_2 = ws_client
        .subscribe_closure(EventKind::json_api_event(), |event| {
            let count = COUNTER.fetch_add(1, Ordering::SeqCst);
            println!("{event:?}");
            println!("{}", count);
        })
        .unwrap();

    thread::sleep(Duration::from_secs(15));

    ws_client
        .unsubscribe(EventKind::json_api_event(), id)
        .unwrap();
    ws_client
        .unsubscribe(EventKind::json_api_event(), id_2)
        .unwrap();

    ws_client.abort().unwrap();

    println!("Done!");
}