|
|
|
#[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.");
|
|
|
|
}
|