2024-05-19 20:32:19 +02:00
|
|
|
use erased_serde::Serialize;
|
|
|
|
|
use serde::Serialize as SerdeSerialize;
|
2024-05-19 12:22:56 +02:00
|
|
|
|
|
|
|
|
use crate::request::Location;
|
|
|
|
|
use crate::Request;
|
|
|
|
|
|
2024-05-19 20:32:19 +02:00
|
|
|
#[derive(SerdeSerialize)]
|
2024-05-19 12:22:56 +02:00
|
|
|
/// This is the data shared to the client
|
|
|
|
|
pub struct Payload<'a> {
|
|
|
|
|
router: Location<'a>,
|
2024-06-15 12:15:51 +02:00
|
|
|
props: &'a dyn Serialize,
|
2024-05-19 12:22:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl<'a> Payload<'a> {
|
2024-06-15 12:15:51 +02:00
|
|
|
pub fn new(req: &Request<'a>, props: &'a dyn Serialize) -> Payload<'a> {
|
2024-05-19 12:22:56 +02:00
|
|
|
Payload {
|
|
|
|
|
router: req.location(),
|
|
|
|
|
props,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-19 20:32:19 +02:00
|
|
|
pub fn client_payload(&self) -> Result<String, serde_json::Error> {
|
|
|
|
|
serde_json::to_string(&self)
|
2024-05-19 12:22:56 +02:00
|
|
|
}
|
|
|
|
|
}
|