summaryrefslogtreecommitdiffstats
path: root/src/lib.rs
diff options
context:
space:
mode:
authorJokler <jokler.contact@gmail.com>2017-10-04 04:35:27 +0200
committerJokler <jokler.contact@gmail.com>2017-10-04 04:35:27 +0200
commit4446aca4055da69daa398ed3103b069e65a7f2c1 (patch)
treef59c0cc4cb5f5d8c1dcfd386cf17f01542c6ff5c /src/lib.rs
parent298b43631805cbf9fb5ab78fcb5d784a97879d21 (diff)
downloadfrippy-4446aca4055da69daa398ed3103b069e65a7f2c1.tar.gz
frippy-4446aca4055da69daa398ed3103b069e65a7f2c1.zip
Initial bot source
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
new file mode 100644
index 0000000..37ae19c
--- /dev/null
+++ b/src/lib.rs
@@ -0,0 +1,65 @@
+#![feature(proc_macro)]
+extern crate irc;
+#[macro_use]
+extern crate lazy_static;
+
+#[macro_use]
+mod plugin;
+mod plugins;
+
+use std::thread::spawn;
+use std::sync::{Arc, Mutex};
+use irc::client::prelude::*;
+
+use plugin::Plugin;
+
+pub fn run() {
+ let server = IrcServer::new("config.toml").unwrap();
+ server.identify().unwrap();
+
+ let plugins: Vec<Arc<Mutex<Plugin>>> =
+ vec![Arc::new(Mutex::new(plugins::emoji::Emoji::new()))];
+
+ server
+ .for_each_incoming(|message| {
+ let message = Arc::new(message);
+
+ for plugin in plugins.clone().into_iter() {
+ let server = server.clone();
+ let message = message.clone();
+
+ spawn(move || {
+ let mut plugin = match plugin.lock() {
+ Ok(plugin) => plugin,
+ Err(poisoned) => poisoned.into_inner(),
+ };
+
+ if plugin.is_allowed(&server, &message) {
+ plugin.execute(&server, &message).unwrap();
+ }
+ });
+ }
+ })
+ .unwrap();
+}
+
+#[cfg(test)]
+mod tests {
+ use irc::client::prelude::*;
+
+ pub fn make_server(cmd: &str) -> IrcServer {
+ let config = Config {
+ nickname: Some(format!("test")),
+ server: Some(format!("irc.test.net")),
+ channels: Some(vec![format!("#test")]),
+ use_mock_connection: Some(true),
+ ..Default::default()
+ };
+
+ IrcServer::from_config(config).unwrap()
+ }
+
+ pub fn get_server_value(server: &IrcServer) -> String {
+ unimplemented!();
+ }
+}