#sdk #client #events #enums #msnp11

msnp11-sdk

An MSNP11 client SDK

13 releases (6 breaking)

Uses new Rust 2024

0.9.0 Nov 7, 2025
0.8.3 Oct 7, 2025
0.8.2 Aug 22, 2025
0.7.7 Aug 10, 2025
0.3.2 Jun 23, 2025

#107 in #enums

MIT license

150KB
3.5K SLoC

msnp11-sdk

An MSNP11 client SDK written in Rust.

Bindings

Bindings for Kotlin and Swift can be generated with UniFFI.


lib.rs:

An MSNP11 client SDK.

Login

use msnp11_sdk::client::Client;
use msnp11_sdk::enums::event::Event;
use msnp11_sdk::models::personal_message::PersonalMessage;
use msnp11_sdk::enums::msnp_status::MsnpStatus;

let mut client = Client::new("127.0.0.1", 1863)
   .await
   .unwrap();

client.add_event_handler_closure(|event| async { /* Handle events... */ });

// Handle a redirection by creating a new connection
if let Ok(Event::RedirectedTo { server, port }) = client
    .login(
        "testing@example.com".to_string(),
        "123456",
        "http://localhost:3000/rdr/pprdr.asp",
        "msnp11-sdk",
        "0.7"
    )
    .await
 {
    client = Client::new(&*server, port).await.unwrap();
    client
        .login(
            "testing@example.com".to_string(),
            "123456",
            "http://localhost:3000/rdr/pprdr.asp",
            "msnp11-sdk",
            "0.7"
        )
        .await
        .unwrap();
 }

client.set_presence(MsnpStatus::Online).await.unwrap();
client
    .set_personal_message(&PersonalMessage {
        psm: "test".to_string(),
        current_media: "".to_string(),
    })
    .await
    .unwrap();

Bindings

Bindings for Kotlin and Swift can be generated with UniFFI.

Dependencies

~14–34MB
~506K SLoC