core/src/api/selector.rs

115 lines
4.2 KiB
Rust
Raw Normal View History

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-04-22 15:28:07 +00:00
use crate::chat::types::{PackedMessage, SP};
use async_std::io::Result;
2021-04-22 15:28:07 +00:00
use rusqlite;
use rusqlite::Connection;
use serde_json::from_str;
use serde_json::json;
use r2d2::Pool;
use r2d2_sqlite::SqliteConnectionManager;
// server_sender sending data to server thread;
pub fn request_selector(json: &str, server_sender: SP, conn: Pool<SqliteConnectionManager>,) -> Result<()> {
// if let Ok(res) = from_str::<CreateInstanceReq>(&json) {
//TODO v0.3 Add Instances return Ok(());
// }
let conn = conn.get().unwrap();
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();
2021-04-22 15:28:07 +00:00
match parsed {
2021-04-12 14:05:11 +00:00
Request::StartApp => {
2021-04-16 17:00:21 +00:00
match handlers::start_app(server_sender.clone()) {
2021-04-22 15:28:07 +00:00
Ok(_) => return Ok(()),
Err(_) => {} // Sending error to user, because failed to add user
// let _ = server_sender
// .clone()
// .send(PackedMessage::ToClient(
// json!(AppError {
// res_type: ErrorType::FailedToAddUser
// })
// .to_string(),
// ))
// .unwrap();
// return Ok(());
}
2021-04-16 17:00:21 +00:00
}
2021-04-22 15:28:07 +00:00
Request::StopApp => match handlers::stop_app(&conn, server_sender.clone()) {
Ok(_) => {}
Err(_) => {}
2021-04-12 14:05:11 +00:00
},
2021-04-22 15:28:07 +00:00
Request::LoadUsers => match handlers::load_users(&conn, server_sender.clone()) {
Ok(_) => {}
Err(_) => {}
2021-04-12 14:05:11 +00:00
},
2021-04-22 15:28:07 +00:00
Request::SendMessage { user_id, message } => {
match handlers::send_message(user_id, message, &conn, server_sender.clone()) {
Ok(_) => {}
Err(_) => {}
}
}
Request::LoadMessages {
user_id,
count,
start_index,
2021-04-12 14:05:11 +00:00
} => {
2021-04-22 15:28:07 +00:00
match handlers::load_messages(user_id, start_index, count, &conn, server_sender.clone())
{
Ok(_) => {}
Err(_) => {}
}
}
Request::AddUser {
name,
sign_key,
insert_key,
id
} => match handlers::add_user(name, insert_key, sign_key, id, &conn, server_sender.clone()) {
2021-04-22 15:28:07 +00:00
Ok(_) => {}
Err(_) => {}
2021-04-12 14:05:11 +00:00
},
2021-04-22 15:28:07 +00:00
req => {
log::error!("{}", async_std::io::Error::new(
async_std::io::ErrorKind::InvalidData,
serde_json::to_string(&req).unwrap(),
))
}
2021-04-12 14:05:11 +00:00
}
2021-04-22 15:28:07 +00:00
Ok(())
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-04-12 14:05:11 +00:00
*/
}