diff --git a/src/connect.rs b/src/connect.rs index 9d8f12c..8bed2ee 100644 --- a/src/connect.rs +++ b/src/connect.rs @@ -15,6 +15,8 @@ * along with Mention2Mail. If not, see . */ +//! Contains utilities for connecting to an IRC server. + use std::{ format, net::TcpStream, @@ -23,12 +25,13 @@ use irc_stream::{IrcStream, IrcRead, IrcWrite}; use toml::value::Value; use native_tls::{TlsConnector,TlsStream}; -// Weird workaround for multitrait dyn pointer -// https://github.com/rust-lang/rfcs/issues/2035 -// would be a charm... +/// Workaround for multitrait dyn Box. +/// https://github.com/rust-lang/rfcs/issues/2035 +/// would be a charm... pub trait IrcReadWrite: IrcRead + IrcWrite {} impl IrcReadWrite for T {} +/// Helper function for connecting over TCP fn get_tcp_stream (config: &Value) -> Result> { let address = format!("{}:{}", @@ -41,6 +44,7 @@ fn get_tcp_stream (config: &Value) Ok(TcpStream::connect(address)?) } +/// Helper function for connecting over TLS fn get_tls_stream (config: &Value) -> Result, Box> { let connector = TlsConnector::new().unwrap(); @@ -52,6 +56,8 @@ fn get_tls_stream (config: &Value) ) } +/// Connects to the irc server given in the config. +/// The connection will be through either a TCP or TLS stream. pub fn connect_irc (config: &Value) -> Result, Box> { diff --git a/src/main.rs b/src/main.rs index ec283bc..6b7f18e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -38,6 +38,9 @@ use toml::value::Value; trait IrcReadWrite: IrcRead + IrcWrite {} impl IrcReadWrite for T {} +/// parses a toml config file and sets some default values +/// if the corresponding fields are not set. +// TODO: Document config file options once they are stable. fn get_config>(config_path: P) -> Result> { @@ -68,6 +71,9 @@ fn get_config>(config_path: P) Ok(Value::from(config)) } +/// Constructs a VecDeque with the messages +/// required to identify with an IRC server. +/// Uses the credentials set in -`config.toml`. fn get_irc_identify_messages (config: &Value) -> Result, Box> { let mut queue = VecDeque::new(); @@ -115,6 +121,8 @@ fn get_irc_identify_messages (config: &Value) Ok(queue) } +/// Appends a given VecDeque to include the messages +/// used to join the channels defined in `config.toml`. fn get_irc_join_messages(config: &Value, queue: VecDeque) -> Result, Box> { let mut queue = queue;