currently a not very useful pleroma bot. may become something else later
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
manabu/src/main.rs

76 lines
1.7 KiB

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