diff --git a/README.md b/README.md index 95f7bb2..eb996c5 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,7 @@ messages starting with a slash are sent to chat only if the `--disable-commands` - [Compiling](docs/compiling.md) - [User agents](docs/user_agents.md) +- [Using as crate](docs/crate.md) - [Authenticated mode](docs/auth_mode.md) - [WRAC protocol (v2.0)](docs/wrac.md) - [About RAC URL](docs/url.md) diff --git a/docs/crate.md b/docs/crate.md new file mode 100644 index 0000000..74e46b2 --- /dev/null +++ b/docs/crate.md @@ -0,0 +1,60 @@ +# Using as crate + +This article describes how to use the client as rust crate + +## Installation + +To use exact version: + +```toml +[dependencies.bRAC] +git = "https://github.com/MeexReay/bRAC" +tag = "0.1.2+2.0" +default-features = false +``` + +To use with latest changes: + +```toml +[dependencies.bRAC] +git = "https://github.com/MeexReay/bRAC" +default-features = false +``` + +`default-features = false` here removes GTK4 gui from installation. + +## Usage + +As the code structure was changed like about gazillion times, +you need to explore it yourself, if you are using an old version. +Here is example of usage on commit [80e7b8c](https://github.com/MeexReay/bRAC/commit/80e7b8c50642f9b76be06980305ed03253858d0c) + +```rust +use bRAC::proto::*; +use std::error::Error; + +fn main() -> Result<(), Box> { + let mut conn = connect("rac://meex.lol", None)?; // read docs/url.md + + send_message(&mut conn, " hi RAC-loving kikes!")?; + register_user(&mut conn, "dude", "password")?; + send_message_auth(&mut conn, "dude", "password", "my auth message")?; + send_message_spoof_auth(&mut conn, " this message totally fucks auth system")?; + + let (mut all_messages, last_size) = read_messages(&mut conn, 10, 0, false)?.unwrap(); // limits with 10 messages + + /* imagine that new messages were written here */ + + let (mut new_messages, last_size) = read_messages(&mut conn, 10, last_size, true)?.unwrap(); // chunked reading! + + all_messages.append(&mut new_messages); + + println!("all_messages: {all_messages:?}. last_size: {last_size}"); + + Ok(()) +} +``` + +## See more + +- [rac-rs - A Rust client library for RAC protocol. (with async support)](https://github.com/kostya-zero/rac-rs) \ No newline at end of file diff --git a/examples/protocol.rs b/examples/protocol.rs new file mode 100644 index 0000000..f75f328 --- /dev/null +++ b/examples/protocol.rs @@ -0,0 +1,23 @@ +use bRAC::proto::*; +use std::error::Error; + +fn main() -> Result<(), Box> { + let mut conn = connect("rac://meex.lol", None)?; + + send_message(&mut conn, " hi RAC-loving kikes!")?; + register_user(&mut conn, "dude", "password")?; + send_message_auth(&mut conn, "dude", "password", "my auth message")?; + send_message_spoof_auth(&mut conn, " this message totally fucks auth system")?; + + let (mut all_messages, last_size) = read_messages(&mut conn, 10, 0, false)?.unwrap(); // limits with 10 messages + + /* imagine that new messages were written here */ + + let (mut new_messages, last_size) = read_messages(&mut conn, 10, last_size, true)?.unwrap(); // chunked reading! + + all_messages.append(&mut new_messages); + + println!("all_messages: {all_messages:?}. last_size: {last_size}"); + + Ok(()) +}