rusty_tracks/messages/
register.rs1use crate::connection::Permission;
2use track_rails::message_generated::protocol::{Message, Payload};
3
4#[derive(Debug)]
5pub struct RegisterResponse {
6 pub(crate) permissions: Vec<Permission>,
7 id: usize
8}
9
10impl TryFrom<Message<'_>> for RegisterResponse {
11 type Error = String;
12
13 fn try_from(msg: Message<'_>) -> Result<Self, Self::Error> {
14 match msg.data_type() {
15 Payload::RegisterResponse => {
16 let permissions = msg.data_as_register_response().unwrap().permissions().unwrap_or_default();
17 let permissions = permissions.into_iter().map(|buffer: &str| {
18 Permission::try_from(buffer)
19 }).filter_map(|s|s.ok()).collect();
20 let id = msg.data_as_register_response().unwrap().id().map(|id| id as usize).ok_or("Could not get id")?;
21 Ok(RegisterResponse{permissions, id })
22 }
23 _ => Err(String::from("Could not transform"))
24 }
25
26 }
27}