rusty-hub/src/utils.rs

58 lines
1.4 KiB
Rust
Raw Normal View History

2019-04-25 23:52:17 +02:00
use diesel::prelude::*;
use diesel::r2d2::{self, ConnectionManager};
2019-04-25 00:37:29 +02:00
use slog::Drain;
use std::collections::HashMap;
use url::Url;
2019-04-25 00:37:29 +02:00
pub type Pool = r2d2::Pool<ConnectionManager<SqliteConnection>>;
2019-04-25 23:52:17 +02:00
2019-04-25 00:37:29 +02:00
pub struct AppState {
pub log: slog::Logger,
pub db: Pool,
2019-04-25 00:37:29 +02:00
}
pub fn setup_logging() -> slog::Logger {
let decorator = slog_term::TermDecorator::new().build();
let drain = slog_term::CompactFormat::new(decorator).build().fuse();
let drain = slog_async::Async::new(drain).build().fuse();
slog::Logger::root(drain, o!())
}
2019-05-07 01:14:51 +02:00
pub fn validate_parsed_data(parameters: &HashMap<String,String>) -> bool {
let callback;
let mode;
let topic;
match parameters.get("hub.callback") {
Some(value) => callback = value,
None => return false,
};
match parameters.get("hub.mode") {
Some(value) => mode = value,
None => return false,
};
match parameters.get("hub.topic") {
Some(value) => topic = value,
None => return false,
};
if mode != &"subscribe" && mode != &"unsubscribe" {
debug!(setup_logging(), "Invalid Method: {}", mode);
return false;
}
match Url::parse(callback) {
Ok(value) => debug!(setup_logging(), "Valid Callback: {}", value),
Err(_) => return false,
}
match Url::parse(topic) {
Ok(value) => debug!(setup_logging(), "Valid Topic: {}", value),
Err(_) => return false,
}
true
2019-05-07 01:14:51 +02:00
}