irc-command-micro 0.0.13

A library to parse irc messages and provide a stable representation in return
Documentation

irc-command-micro

Early implementation of a parser for irc messages

use irc_command_micro::message::Message;

fn main() {
    let message_bytes = vec![58, 65, 110, 111, 110, 32, 78, 65, 77, 69, 83];
    let message = Message::parse(message_bytes, None).unwrap();
    println!("{:?}", message);
    // Message { source: Some("Anon"), command: NAMES, params: [] }
    // Get list of names from server
    let message_bytes = vec![58,65,110,111,110,32,78,73,67,75,32,68,97,118,101];
    let message = Message::parse(message_bytes, None).unwrap();
    println!("{:?}", message);
    // Message { source: Some("Anon"), command: NICK, params: ["Dave"] }
    // Change nickname to Dave
    let message_bytes = vec![58,65,110,111,110,32,78,73,67,75];
    let message = Message::parse(message_bytes, None);
    println!("{:?}", message);
    // Err(MessageError { detail: NotEnoughParams })
    // Here we haven't provided the mandatory parameter for NICK
    let message_bytes = vec![58,65,110,111,110,32,78,105,99,107,32,68,97,118,101];
    let message = Message::parse(message_bytes, None);
    println!("{:?}", message);
    // Err(MessageError { detail: InvalidCommand })
    // Here we have given the incorrect cased command "Nick"
}

You can also construct a Message from more reasonable values

let message = Message::new(Some("Anon"), IRCCommand::NAMES, Vec::new())

A message object can then be returned to a value that can be transmitted

let tcp_data: Vec<u8> = message.serialize()
// [58, 65, 110, 111, 110, 32, 78, 65, 77, 69, 83]