From d1762d8c7a6ed25511c1c927d22a9fa69332510c Mon Sep 17 00:00:00 2001 From: DylanCa Date: Sat, 13 Jan 2024 12:35:34 +0100 Subject: [PATCH] Added lib documentation --- src/lib.rs | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 3060a76..ef80f7a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,64 @@ -pub mod client; -pub mod models; +//! # Rust Discord Activity +//! _A lightweight Rust library to control Discord Rich Presence_ +//! +//! ## Installation +//! Rust Discord Activity is available directly on [crates.io](https://crates.io/crates/rust-discord-activity): +//! `cargo add rust-discord-activity` +//! +//! ## How to use +//! 1. Instantiate a new DiscordClient +//! 2. Create your Activity and set desired data using provided structs +//! 3. Create a new Payload with your Activity +//! 4. Send your Payload through the DiscordClient +//! +//! Et voilĂ  ! +//! +//! ## Example +//! ```rust +//! let mut client = DiscordClient::new(""); +//! +//! let limg = Some(String::from("https://placehold.co/600x400/png")); +//! let simg = Some(String::from("https://placehold.co/200x100/png")); +//! let asset = Asset::new(limg, None, simg, None); +//! let now_in_millis = SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis(); +//! let timestamp = Timestamp::new(Some(now_in_millis - 10000), None); +//! +//! let party = Party::new(None, Some((2, 4))); +//! let mut button_vec = vec![]; +//! button_vec.push(Button::new("First Button".into(), "https://google.com".into())); +//! button_vec.push(Button::new("Second Button".into(), "https://yahoo.com".into())); +//! +//! let mut activity = Activity::new(); +//! +//! activity +//! .set_state(Some("This is State".into())) +//! .set_activity_type(Some(ActivityType::LISTENING)) +//! .set_details(Some("This is Details".parse().unwrap())) +//! .set_timestamps(Some(timestamp)) +//! .set_assets(Some(asset)) +//! .set_party(Some(party)) +//! .set_instance(Some(true)) +//! .set_buttons(Some(button_vec)); +//! +//! let payload = Payload::new(EventName::Activity, EventData::Activity(activity)); +//! +//! let _ = client.send_payload(payload); +//! +//! ``` +//! +//! And voilĂ ! This sets-up a new Activity for the current Discord user: +//! +//! Discord Rich Presence +//! +//! ## Limitations +//! For the moment, the library only works with MacOS and local Discord application. +//! +//! ## Next Steps +//! - Write proper documentation for this library +//! - Write unit tests + +mod client; +mod models; pub use client::ipc::DiscordClient; pub use models::activity::Activity;