jacquard_api/place_stream/moderation/
delete_gate.rs1#[allow(unused_imports)]
9use alloc::collections::BTreeMap;
10
11#[allow(unused_imports)]
12use core::marker::PhantomData;
13use jacquard_common::CowStr;
14use jacquard_common::types::string::{Did, AtUri};
15use jacquard_derive::{IntoStatic, lexicon, open_union};
16use serde::{Serialize, Deserialize};
17
18#[lexicon]
19#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
20#[serde(rename_all = "camelCase")]
21pub struct DeleteGate<'a> {
22 #[serde(borrow)]
24 pub gate_uri: AtUri<'a>,
25 #[serde(borrow)]
27 pub streamer: Did<'a>,
28}
29
30
31#[lexicon]
32#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
33#[serde(rename_all = "camelCase")]
34pub struct DeleteGateOutput<'a> {}
35
36#[open_union]
37#[derive(
38 Serialize,
39 Deserialize,
40 Debug,
41 Clone,
42 PartialEq,
43 Eq,
44 thiserror::Error,
45 miette::Diagnostic,
46 IntoStatic
47)]
48
49#[serde(tag = "error", content = "message")]
50#[serde(bound(deserialize = "'de: 'a"))]
51pub enum DeleteGateError<'a> {
52 #[serde(rename = "Unauthorized")]
54 Unauthorized(Option<CowStr<'a>>),
55 #[serde(rename = "Forbidden")]
57 Forbidden(Option<CowStr<'a>>),
58 #[serde(rename = "SessionNotFound")]
60 SessionNotFound(Option<CowStr<'a>>),
61}
62
63impl core::fmt::Display for DeleteGateError<'_> {
64 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
65 match self {
66 Self::Unauthorized(msg) => {
67 write!(f, "Unauthorized")?;
68 if let Some(msg) = msg {
69 write!(f, ": {}", msg)?;
70 }
71 Ok(())
72 }
73 Self::Forbidden(msg) => {
74 write!(f, "Forbidden")?;
75 if let Some(msg) = msg {
76 write!(f, ": {}", msg)?;
77 }
78 Ok(())
79 }
80 Self::SessionNotFound(msg) => {
81 write!(f, "SessionNotFound")?;
82 if let Some(msg) = msg {
83 write!(f, ": {}", msg)?;
84 }
85 Ok(())
86 }
87 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
88 }
89 }
90}
91
92pub struct DeleteGateResponse;
94impl jacquard_common::xrpc::XrpcResp for DeleteGateResponse {
95 const NSID: &'static str = "place.stream.moderation.deleteGate";
96 const ENCODING: &'static str = "application/json";
97 type Output<'de> = DeleteGateOutput<'de>;
98 type Err<'de> = DeleteGateError<'de>;
99}
100
101impl<'a> jacquard_common::xrpc::XrpcRequest for DeleteGate<'a> {
102 const NSID: &'static str = "place.stream.moderation.deleteGate";
103 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
104 "application/json",
105 );
106 type Response = DeleteGateResponse;
107}
108
109pub struct DeleteGateRequest;
111impl jacquard_common::xrpc::XrpcEndpoint for DeleteGateRequest {
112 const PATH: &'static str = "/xrpc/place.stream.moderation.deleteGate";
113 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
114 "application/json",
115 );
116 type Request<'de> = DeleteGate<'de>;
117 type Response = DeleteGateResponse;
118}
119
120pub mod delete_gate_state {
121
122 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
123 #[allow(unused)]
124 use ::core::marker::PhantomData;
125 mod sealed {
126 pub trait Sealed {}
127 }
128 pub trait State: sealed::Sealed {
130 type Streamer;
131 type GateUri;
132 }
133 pub struct Empty(());
135 impl sealed::Sealed for Empty {}
136 impl State for Empty {
137 type Streamer = Unset;
138 type GateUri = Unset;
139 }
140 pub struct SetStreamer<S: State = Empty>(PhantomData<fn() -> S>);
142 impl<S: State> sealed::Sealed for SetStreamer<S> {}
143 impl<S: State> State for SetStreamer<S> {
144 type Streamer = Set<members::streamer>;
145 type GateUri = S::GateUri;
146 }
147 pub struct SetGateUri<S: State = Empty>(PhantomData<fn() -> S>);
149 impl<S: State> sealed::Sealed for SetGateUri<S> {}
150 impl<S: State> State for SetGateUri<S> {
151 type Streamer = S::Streamer;
152 type GateUri = Set<members::gate_uri>;
153 }
154 #[allow(non_camel_case_types)]
156 pub mod members {
157 pub struct streamer(());
159 pub struct gate_uri(());
161 }
162}
163
164pub struct DeleteGateBuilder<'a, S: delete_gate_state::State> {
166 _state: PhantomData<fn() -> S>,
167 _fields: (Option<AtUri<'a>>, Option<Did<'a>>),
168 _lifetime: PhantomData<&'a ()>,
169}
170
171impl<'a> DeleteGate<'a> {
172 pub fn new() -> DeleteGateBuilder<'a, delete_gate_state::Empty> {
174 DeleteGateBuilder::new()
175 }
176}
177
178impl<'a> DeleteGateBuilder<'a, delete_gate_state::Empty> {
179 pub fn new() -> Self {
181 DeleteGateBuilder {
182 _state: PhantomData,
183 _fields: (None, None),
184 _lifetime: PhantomData,
185 }
186 }
187}
188
189impl<'a, S> DeleteGateBuilder<'a, S>
190where
191 S: delete_gate_state::State,
192 S::GateUri: delete_gate_state::IsUnset,
193{
194 pub fn gate_uri(
196 mut self,
197 value: impl Into<AtUri<'a>>,
198 ) -> DeleteGateBuilder<'a, delete_gate_state::SetGateUri<S>> {
199 self._fields.0 = Option::Some(value.into());
200 DeleteGateBuilder {
201 _state: PhantomData,
202 _fields: self._fields,
203 _lifetime: PhantomData,
204 }
205 }
206}
207
208impl<'a, S> DeleteGateBuilder<'a, S>
209where
210 S: delete_gate_state::State,
211 S::Streamer: delete_gate_state::IsUnset,
212{
213 pub fn streamer(
215 mut self,
216 value: impl Into<Did<'a>>,
217 ) -> DeleteGateBuilder<'a, delete_gate_state::SetStreamer<S>> {
218 self._fields.1 = Option::Some(value.into());
219 DeleteGateBuilder {
220 _state: PhantomData,
221 _fields: self._fields,
222 _lifetime: PhantomData,
223 }
224 }
225}
226
227impl<'a, S> DeleteGateBuilder<'a, S>
228where
229 S: delete_gate_state::State,
230 S::Streamer: delete_gate_state::IsSet,
231 S::GateUri: delete_gate_state::IsSet,
232{
233 pub fn build(self) -> DeleteGate<'a> {
235 DeleteGate {
236 gate_uri: self._fields.0.unwrap(),
237 streamer: self._fields.1.unwrap(),
238 extra_data: Default::default(),
239 }
240 }
241 pub fn build_with_data(
243 self,
244 extra_data: BTreeMap<
245 jacquard_common::deps::smol_str::SmolStr,
246 jacquard_common::types::value::Data<'a>,
247 >,
248 ) -> DeleteGate<'a> {
249 DeleteGate {
250 gate_uri: self._fields.0.unwrap(),
251 streamer: self._fields.1.unwrap(),
252 extra_data: Some(extra_data),
253 }
254 }
255}