// @generated by jacquard-lexicon. DO NOT EDIT. // // Lexicon: stream.kralsei.pushInteraction // // This file was automatically generated from Lexicon schemas. // Any manual changes will be overwritten on the next regeneration. #[allow(unused_imports)] use alloc::collections::BTreeMap; #[allow(unused_imports)] use core::marker::PhantomData; use jacquard_common::deps::smol_str::SmolStr; use jacquard_common::types::value::Data; use jacquard_common::{BosStr, CowStr, DefaultStr, FromStaticStr}; use jacquard_derive::IntoStatic; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)] #[serde( rename_all = "camelCase", bound(deserialize = "S: Deserialize<'de> + BosStr") )] pub struct PushInteraction { /// The character the interaction with is #[serde(skip_serializing_if = "Option::is_none")] pub character: Option>, /// Type of interaction #[serde(skip_serializing_if = "Option::is_none")] pub interaction: Option>, #[serde(flatten, default, skip_serializing_if = "Option::is_none")] pub extra_data: Option>>, } /// The character the interaction with is #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum PushInteractionCharacter { Kris, Ralsei, Other(S), } impl PushInteractionCharacter { pub fn as_str(&self) -> &str { match self { Self::Kris => "kris", Self::Ralsei => "ralsei", Self::Other(s) => s.as_ref(), } } /// Construct from a string-like value, matching known values. pub fn from_value(s: S) -> Self { match s.as_ref() { "kris" => Self::Kris, "ralsei" => Self::Ralsei, _ => Self::Other(s), } } } impl core::fmt::Display for PushInteractionCharacter { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { write!(f, "{}", self.as_str()) } } impl AsRef for PushInteractionCharacter { fn as_ref(&self) -> &str { self.as_str() } } impl Serialize for PushInteractionCharacter { fn serialize(&self, serializer: Ser) -> Result where Ser: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de, S: Deserialize<'de> + BosStr> Deserialize<'de> for PushInteractionCharacter { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = S::deserialize(deserializer)?; Ok(Self::from_value(s)) } } impl Default for PushInteractionCharacter { fn default() -> Self { Self::Other(Default::default()) } } impl jacquard_common::IntoStatic for PushInteractionCharacter where S: BosStr + jacquard_common::IntoStatic, S::Output: BosStr, { type Output = PushInteractionCharacter; fn into_static(self) -> Self::Output { match self { PushInteractionCharacter::Kris => PushInteractionCharacter::Kris, PushInteractionCharacter::Ralsei => PushInteractionCharacter::Ralsei, PushInteractionCharacter::Other(v) => PushInteractionCharacter::Other(v.into_static()), } } } /// Type of interaction #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum PushInteractionInteraction { Boop, Hug, Other(S), } impl PushInteractionInteraction { pub fn as_str(&self) -> &str { match self { Self::Boop => "boop", Self::Hug => "hug", Self::Other(s) => s.as_ref(), } } /// Construct from a string-like value, matching known values. pub fn from_value(s: S) -> Self { match s.as_ref() { "boop" => Self::Boop, "hug" => Self::Hug, _ => Self::Other(s), } } } impl core::fmt::Display for PushInteractionInteraction { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { write!(f, "{}", self.as_str()) } } impl AsRef for PushInteractionInteraction { fn as_ref(&self) -> &str { self.as_str() } } impl Serialize for PushInteractionInteraction { fn serialize(&self, serializer: Ser) -> Result where Ser: serde::Serializer, { serializer.serialize_str(self.as_str()) } } impl<'de, S: Deserialize<'de> + BosStr> Deserialize<'de> for PushInteractionInteraction { fn deserialize(deserializer: D) -> Result where D: serde::Deserializer<'de>, { let s = S::deserialize(deserializer)?; Ok(Self::from_value(s)) } } impl Default for PushInteractionInteraction { fn default() -> Self { Self::Other(Default::default()) } } impl jacquard_common::IntoStatic for PushInteractionInteraction where S: BosStr + jacquard_common::IntoStatic, S::Output: BosStr, { type Output = PushInteractionInteraction; fn into_static(self) -> Self::Output { match self { PushInteractionInteraction::Boop => PushInteractionInteraction::Boop, PushInteractionInteraction::Hug => PushInteractionInteraction::Hug, PushInteractionInteraction::Other(v) => { PushInteractionInteraction::Other(v.into_static()) } } } } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)] #[serde( rename_all = "camelCase", bound(deserialize = "S: Deserialize<'de> + BosStr") )] pub struct PushInteractionOutput { pub success: bool, #[serde(flatten, default, skip_serializing_if = "Option::is_none")] pub extra_data: Option>>, } /** Response marker for the `stream.kralsei.pushInteraction` procedure. Implements `jacquard_common::xrpc::XrpcResp`; successful bodies decode as `Self::Output`, which is `PushInteractionOutput` for this endpoint.*/ pub struct PushInteractionResponse; impl jacquard_common::xrpc::XrpcResp for PushInteractionResponse { const NSID: &'static str = "stream.kralsei.pushInteraction"; const ENCODING: &'static str = "application/json"; type Output = PushInteractionOutput; type Err = jacquard_common::xrpc::GenericError; } impl jacquard_common::xrpc::XrpcRequest for PushInteraction { const NSID: &'static str = "stream.kralsei.pushInteraction"; const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure("application/json"); type Response = PushInteractionResponse; } /** Endpoint marker for the `stream.kralsei.pushInteraction` procedure. Path: `/xrpc/stream.kralsei.pushInteraction`. The request payload type is `PushInteraction`; send that request with `jacquard::Client` or use this marker through lower-level `XrpcEndpoint` APIs.*/ pub struct PushInteractionRequest; impl jacquard_common::xrpc::XrpcEndpoint for PushInteractionRequest { const PATH: &'static str = "/xrpc/stream.kralsei.pushInteraction"; const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure("application/json"); type Request = PushInteraction; type Response = PushInteractionResponse; }