29 lines
1.1 KiB
Rust
29 lines
1.1 KiB
Rust
use std::collections::VecDeque;
|
|
use anyhow::Error;
|
|
use async_trait::async_trait;
|
|
use http_body_util::Full;
|
|
use hyper::body::Bytes;
|
|
use hyper::Response;
|
|
use hyper::http::request::Parts;
|
|
use cove_net_common::message::c2s::account::register::RegisterMessage;
|
|
use cove_net_common::message::c2s::ClientToServerMessage;
|
|
use crate::message::handlers::base::handler::{CoveBodyDeserializer, CoveRequestHandler};
|
|
use crate::message::handlers::base::middleware::AssociatedDataMap;
|
|
|
|
pub struct RegisterMessageHandler;
|
|
|
|
#[async_trait]
|
|
impl CoveRequestHandler for RegisterMessageHandler {
|
|
async fn handle_request(&self, request_parts: Parts, body: Bytes, path: &mut VecDeque<&str>, associated_data: &mut AssociatedDataMap) -> Result<Response<Full<Bytes>>, Error> {
|
|
let msg = self.body_to_message(body).await?;
|
|
Ok(Response::new(
|
|
serde_json::to_string(&msg.create_s2c_message())?.into()
|
|
))
|
|
}
|
|
}
|
|
#[async_trait]
|
|
impl CoveBodyDeserializer<RegisterMessage> for RegisterMessageHandler {
|
|
async fn body_to_message(&self, body: Bytes) -> Result<RegisterMessage, Error> {
|
|
Ok(serde_json::from_slice(&body)?)
|
|
}
|
|
} |