2021-04-12 12:44:14 +00:00
|
|
|
use crate::chat::types::{PackedMessage, SP}; use rusqlite;
|
2021-03-31 04:12:26 +00:00
|
|
|
use super::{
|
|
|
|
handlers,
|
2021-04-12 14:05:11 +00:00
|
|
|
request::Request,
|
2021-03-31 04:12:26 +00:00
|
|
|
response::{AppError, ErrorType, ResponseType},
|
|
|
|
};
|
2021-03-26 18:50:57 +00:00
|
|
|
use async_std::io::Result;
|
|
|
|
use rusqlite::Connection;
|
|
|
|
use serde_json::from_str;
|
|
|
|
use serde_json::json;
|
|
|
|
// server_sender sending data to server thread;
|
2021-04-12 14:05:11 +00:00
|
|
|
pub fn request_selector(json: &str, server_sender: SP, conn: &Connection) -> Result<()> {
|
2021-03-26 18:50:57 +00:00
|
|
|
// if let Ok(res) = from_str::<CreateInstanceReq>(&json) {
|
|
|
|
//TODO v0.3 Add Instances return Ok(());
|
|
|
|
// }
|
2021-04-06 10:03:57 +00:00
|
|
|
log::info!("matching request...");
|
2021-04-12 14:05:11 +00:00
|
|
|
let parsed: Request = serde_json::from_str(json).unwrap();
|
|
|
|
match parsed{
|
|
|
|
Request::StartApp => {
|
|
|
|
handlers::start_app(server_sender.clone())?
|
|
|
|
},
|
|
|
|
Request::StopApp => {
|
|
|
|
handlers::stop_app(&conn, server_sender.clone())?
|
|
|
|
},
|
|
|
|
Request::LoadUsers => {
|
|
|
|
handlers::load_users(&conn, server_sender.clone())?
|
|
|
|
},
|
|
|
|
Request::SendMessage {
|
|
|
|
user_id, message
|
|
|
|
} => {
|
|
|
|
handlers::send_message(user_id, message, &conn, server_sender.clone())?
|
|
|
|
},
|
|
|
|
Request::LoadMessages{
|
|
|
|
user_id, count, start_index
|
|
|
|
} => {
|
|
|
|
handlers::load_messages(user_id, start_index, count, &conn, server_sender.clone())?
|
|
|
|
},
|
|
|
|
Request::AddUser{
|
|
|
|
name, sign_key, insert_key
|
|
|
|
} => {
|
|
|
|
handlers::add_user(name, insert_key, sign_key, &conn, server_sender.clone())?
|
|
|
|
},
|
|
|
|
}
|
2021-03-26 18:50:57 +00:00
|
|
|
|
2021-04-12 14:05:11 +00:00
|
|
|
/*
|
|
|
|
if let Ok(res) = from_str::<StartAppReq>(&json) {kk
|
2021-04-06 10:03:57 +00:00
|
|
|
handlers::start_app(res, server_sender.clone())?
|
|
|
|
} else if let Ok(res) = from_str::<StopAppReq>(&json) {
|
|
|
|
handlers::stop_app(res, conn, server_sender.clone())?
|
|
|
|
} else if let Ok(res) = from_str::<LoadUsersReq>(&json) {
|
|
|
|
handlers::load_users(res, conn, server_sender.clone())?
|
|
|
|
} else if let Ok(res) = from_str::<SendMessageReq>(&json) {
|
|
|
|
handlers::send_message(res, conn, server_sender.clone())?
|
|
|
|
} else if let Ok(res) = from_str::<LoadMessagesReq>(&json) {
|
|
|
|
handlers::load_messages(res, conn, server_sender.clone())?
|
|
|
|
} else if let Ok(res) = from_str::<AddUserReq>(&json) {
|
|
|
|
match handlers::add_user(res, conn, server_sender.clone()) {
|
|
|
|
Ok(_) => return Ok(()),
|
2021-03-31 04:12:26 +00:00
|
|
|
Err(e) => {
|
2021-04-01 12:44:13 +00:00
|
|
|
// Sending error to user, because failed to add user
|
2021-03-31 04:12:26 +00:00
|
|
|
let _ = server_sender
|
2021-04-06 10:03:57 +00:00
|
|
|
.clone()
|
2021-03-31 04:12:26 +00:00
|
|
|
.send(PackedMessage::ToClient(
|
|
|
|
json!(AppError {
|
|
|
|
res_type: ErrorType::FailedToAddUser
|
|
|
|
})
|
|
|
|
.to_string(),
|
|
|
|
))
|
|
|
|
.unwrap();
|
2021-04-06 10:03:57 +00:00
|
|
|
return Ok(());
|
2021-03-31 04:12:26 +00:00
|
|
|
}
|
|
|
|
}
|
2021-04-06 10:03:57 +00:00
|
|
|
} else {
|
|
|
|
log::error!("{}\n is wrong formatted", json)
|
2021-03-26 18:50:57 +00:00
|
|
|
}
|
2021-04-12 14:05:11 +00:00
|
|
|
*/
|
2021-04-06 10:03:57 +00:00
|
|
|
|
2021-03-26 18:50:57 +00:00
|
|
|
Err(async_std::io::Error::new(
|
|
|
|
async_std::io::ErrorKind::InvalidData,
|
2021-04-12 14:05:11 +00:00
|
|
|
serde_json::to_string(&Request::StartApp).unwrap(),
|
2021-03-26 18:50:57 +00:00
|
|
|
))
|
|
|
|
}
|