Wrap the data into a request type
This commit is contained in:
@ -1,9 +1,31 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
#[serde(untagged)]
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
#[serde(tag = "type", content = "request")]
|
||||
pub enum WorkerMessages {
|
||||
#[serde(rename = "auth_request")]
|
||||
AuthenticateRequest { login: String },
|
||||
FooRequest { username: String },
|
||||
String,
|
||||
#[serde(rename = "get_work")]
|
||||
GetWorkRequest {},
|
||||
#[serde(rename = "do_work")]
|
||||
DoWorkRequest {},
|
||||
#[serde(rename = "")]
|
||||
Invalid,
|
||||
}
|
||||
|
||||
impl ToString for WorkerMessages {
|
||||
fn to_string(&self) -> String {
|
||||
serde_json::to_string(&self).expect("To serialize").into()
|
||||
}
|
||||
}
|
||||
|
||||
impl Into<WorkerMessages> for String {
|
||||
fn into(self) -> WorkerMessages {
|
||||
let req: Result<WorkerMessages, serde_json::Error> =
|
||||
serde_json::from_str(self.as_str());
|
||||
match req {
|
||||
Ok(d) => d,
|
||||
Err(_) => WorkerMessages::Invalid,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -81,14 +81,21 @@ fn main() -> () {
|
||||
Ok(_) => {}
|
||||
Err(err) => error!("Processing error: {err}"),
|
||||
}
|
||||
if ! worker.is_authenticated() {
|
||||
if !worker.is_authenticated() {
|
||||
let msg: WorkerMessages = WorkerMessages::AuthenticateRequest {
|
||||
login: "williamdes".to_string(),
|
||||
};
|
||||
let msg: String = serde_json::to_string(&msg).expect("To serialize").into();
|
||||
match ws_client.send(msg) {
|
||||
let msg_string: String = msg.to_string();
|
||||
match ws_client.send(msg_string) {
|
||||
Ok(_) => {
|
||||
worker.authenticated = true;
|
||||
match msg {
|
||||
WorkerMessages::AuthenticateRequest { login } => {
|
||||
worker.authenticated = true; // Anyway, it will kick us if this is not success
|
||||
info!("Logged in as: {login}")
|
||||
}
|
||||
WorkerMessages::GetWorkRequest {} => {}
|
||||
msg => error!("No implemented: {:#?}", msg),
|
||||
}
|
||||
}
|
||||
Err(err) => error!("Unable to connect to {url}: {err}"),
|
||||
}
|
||||
|
Reference in New Issue
Block a user