authnz_common/types/apps/
invites.rs1use impulse_server_kit::salvo;
4use salvo::oapi::ToSchema;
5use serde::{Deserialize, Serialize};
6
7use crate::VecVisitor;
8
9#[derive(Deserialize, Serialize, ToSchema, PartialEq, Eq, Hash, Clone)]
10pub struct GenerateInvitationRequest {
12 pub private_admin_key_begin: Vec<u8>,
14}
15
16#[derive(ToSchema, PartialEq, Eq, Hash, Clone)]
17pub struct Invite(Vec<u8>);
19
20impl serde::Serialize for Invite {
21 fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
22 use serde::ser::SerializeSeq;
23
24 let mut seq = serializer.serialize_seq(Some(self.0.len()))?;
25 for el in self.0.as_slice() {
26 seq.serialize_element(el)?;
27 }
28 seq.end()
29 }
30}
31
32impl<'de> serde::Deserialize<'de> for Invite {
33 fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
34 Ok(Self(deserializer.deserialize_seq(VecVisitor)?))
35 }
36}
37
38impl Invite {
39 pub fn from_raw(code: Vec<u8>) -> Self {
41 Self(code)
42 }
43
44 pub fn as_slice(&self) -> &[u8] {
46 self.0.as_slice()
47 }
48
49 pub fn into_raw(self) -> Vec<u8> {
51 self.0
52 }
53}