#[macro_use] extern crate log; #[macro_use] extern crate failure; #[macro_use] extern crate smart_default; #[macro_use] extern crate serde; #[macro_use] use elefren::{ helpers::cli, prelude::*, entities::prelude::*, http_send::HttpSender, }; use failure::Fallible; use native_tls::TlsConnector; use std::io::{Read, Write}; use std::net::TcpStream; use websocket::{OwnedMessage, ClientBuilder}; mod bootstrap; mod store; mod ele; use crate::bootstrap::handle_cli_args_and_load_config; use crate::store::Store; #[derive(SmartDefault,Serialize,Deserialize,Debug)] #[serde(default)] pub struct Config { #[default="info"] pub logging: String, pub instance: String, #[default="manabu_store.json"] pub store: String, } fn main() { let config : Config = handle_cli_args_and_load_config().expect("error init"); debug!("Loaded config: {:#?}", config); let mut store = Store::from_file(&config.store); store.set_autosave(true); let registered = ele::register(&mut store, &config); let session = ele::open_session(&mut store, registered); debug!("Listening to events"); let mut socket = ele::open_stream_websocket(&session, "user"); for m in socket.incoming_messages() { match m { Ok(OwnedMessage::Text(text)) => { debug!("Got msg: {}", text); }, Ok(OwnedMessage::Close(text)) => { debug!("Close"); break; }, Ok(any) => { debug!("Unhandled msg: {:?}", any); } Err(e) => { error!("{}", e); break; }, } } info!("Exit."); }