jacquard_api/tools_ozone/server/
get_config.rs1#[allow(unused_imports)]
9use alloc::collections::BTreeMap;
10
11#[allow(unused_imports)]
12use core::marker::PhantomData;
13use jacquard_common::CowStr;
14
15#[allow(unused_imports)]
16use jacquard_common::deps::codegen::unicode_segmentation::UnicodeSegmentation;
17use jacquard_common::types::string::{Did, UriValue};
18use jacquard_derive::{IntoStatic, lexicon};
19use jacquard_lexicon::lexicon::LexiconDoc;
20use jacquard_lexicon::schema::LexiconSchema;
21
22#[allow(unused_imports)]
23use jacquard_lexicon::validation::{ConstraintError, ValidationPath};
24use serde::{Serialize, Deserialize};
25use crate::tools_ozone::server::get_config;
26
27#[lexicon]
28#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
29#[serde(rename_all = "camelCase")]
30pub struct GetConfigOutput<'a> {
31 #[serde(skip_serializing_if = "Option::is_none")]
32 #[serde(borrow)]
33 pub appview: Option<get_config::ServiceConfig<'a>>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 #[serde(borrow)]
36 pub blob_divert: Option<get_config::ServiceConfig<'a>>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 #[serde(borrow)]
39 pub chat: Option<get_config::ServiceConfig<'a>>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 #[serde(borrow)]
42 pub pds: Option<get_config::ServiceConfig<'a>>,
43 #[serde(skip_serializing_if = "Option::is_none")]
45 #[serde(borrow)]
46 pub verifier_did: Option<Did<'a>>,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 #[serde(borrow)]
49 pub viewer: Option<get_config::ViewerConfig<'a>>,
50}
51
52
53#[lexicon]
54#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
55#[serde(rename_all = "camelCase")]
56pub struct ServiceConfig<'a> {
57 #[serde(skip_serializing_if = "Option::is_none")]
58 #[serde(borrow)]
59 pub url: Option<UriValue<'a>>,
60}
61
62
63#[lexicon]
64#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
65#[serde(rename_all = "camelCase")]
66pub struct ViewerConfig<'a> {
67 #[serde(skip_serializing_if = "Option::is_none")]
68 #[serde(borrow)]
69 pub role: Option<ViewerConfigRole<'a>>,
70}
71
72
73#[derive(Debug, Clone, PartialEq, Eq, Hash)]
74pub enum ViewerConfigRole<'a> {
75 RoleAdmin,
76 RoleModerator,
77 RoleTriage,
78 RoleVerifier,
79 Other(CowStr<'a>),
80}
81
82impl<'a> ViewerConfigRole<'a> {
83 pub fn as_str(&self) -> &str {
84 match self {
85 Self::RoleAdmin => "tools.ozone.team.defs#roleAdmin",
86 Self::RoleModerator => "tools.ozone.team.defs#roleModerator",
87 Self::RoleTriage => "tools.ozone.team.defs#roleTriage",
88 Self::RoleVerifier => "tools.ozone.team.defs#roleVerifier",
89 Self::Other(s) => s.as_ref(),
90 }
91 }
92}
93
94impl<'a> From<&'a str> for ViewerConfigRole<'a> {
95 fn from(s: &'a str) -> Self {
96 match s {
97 "tools.ozone.team.defs#roleAdmin" => Self::RoleAdmin,
98 "tools.ozone.team.defs#roleModerator" => Self::RoleModerator,
99 "tools.ozone.team.defs#roleTriage" => Self::RoleTriage,
100 "tools.ozone.team.defs#roleVerifier" => Self::RoleVerifier,
101 _ => Self::Other(CowStr::from(s)),
102 }
103 }
104}
105
106impl<'a> From<String> for ViewerConfigRole<'a> {
107 fn from(s: String) -> Self {
108 match s.as_str() {
109 "tools.ozone.team.defs#roleAdmin" => Self::RoleAdmin,
110 "tools.ozone.team.defs#roleModerator" => Self::RoleModerator,
111 "tools.ozone.team.defs#roleTriage" => Self::RoleTriage,
112 "tools.ozone.team.defs#roleVerifier" => Self::RoleVerifier,
113 _ => Self::Other(CowStr::from(s)),
114 }
115 }
116}
117
118impl<'a> core::fmt::Display for ViewerConfigRole<'a> {
119 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
120 write!(f, "{}", self.as_str())
121 }
122}
123
124impl<'a> AsRef<str> for ViewerConfigRole<'a> {
125 fn as_ref(&self) -> &str {
126 self.as_str()
127 }
128}
129
130impl<'a> serde::Serialize for ViewerConfigRole<'a> {
131 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
132 where
133 S: serde::Serializer,
134 {
135 serializer.serialize_str(self.as_str())
136 }
137}
138
139impl<'de, 'a> serde::Deserialize<'de> for ViewerConfigRole<'a>
140where
141 'de: 'a,
142{
143 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
144 where
145 D: serde::Deserializer<'de>,
146 {
147 let s = <&'de str>::deserialize(deserializer)?;
148 Ok(Self::from(s))
149 }
150}
151
152impl<'a> Default for ViewerConfigRole<'a> {
153 fn default() -> Self {
154 Self::Other(Default::default())
155 }
156}
157
158impl jacquard_common::IntoStatic for ViewerConfigRole<'_> {
159 type Output = ViewerConfigRole<'static>;
160 fn into_static(self) -> Self::Output {
161 match self {
162 ViewerConfigRole::RoleAdmin => ViewerConfigRole::RoleAdmin,
163 ViewerConfigRole::RoleModerator => ViewerConfigRole::RoleModerator,
164 ViewerConfigRole::RoleTriage => ViewerConfigRole::RoleTriage,
165 ViewerConfigRole::RoleVerifier => ViewerConfigRole::RoleVerifier,
166 ViewerConfigRole::Other(v) => ViewerConfigRole::Other(v.into_static()),
167 }
168 }
169}
170
171#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Copy)]
174pub struct GetConfig;
175pub struct GetConfigResponse;
177impl jacquard_common::xrpc::XrpcResp for GetConfigResponse {
178 const NSID: &'static str = "tools.ozone.server.getConfig";
179 const ENCODING: &'static str = "application/json";
180 type Output<'de> = GetConfigOutput<'de>;
181 type Err<'de> = jacquard_common::xrpc::GenericError<'de>;
182}
183
184impl jacquard_common::xrpc::XrpcRequest for GetConfig {
185 const NSID: &'static str = "tools.ozone.server.getConfig";
186 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query;
187 type Response = GetConfigResponse;
188}
189
190pub struct GetConfigRequest;
192impl jacquard_common::xrpc::XrpcEndpoint for GetConfigRequest {
193 const PATH: &'static str = "/xrpc/tools.ozone.server.getConfig";
194 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query;
195 type Request<'de> = GetConfig;
196 type Response = GetConfigResponse;
197}
198
199impl<'a> LexiconSchema for ServiceConfig<'a> {
200 fn nsid() -> &'static str {
201 "tools.ozone.server.getConfig"
202 }
203 fn def_name() -> &'static str {
204 "serviceConfig"
205 }
206 fn lexicon_doc() -> LexiconDoc<'static> {
207 lexicon_doc_tools_ozone_server_getConfig()
208 }
209 fn validate(&self) -> Result<(), ConstraintError> {
210 Ok(())
211 }
212}
213
214impl<'a> LexiconSchema for ViewerConfig<'a> {
215 fn nsid() -> &'static str {
216 "tools.ozone.server.getConfig"
217 }
218 fn def_name() -> &'static str {
219 "viewerConfig"
220 }
221 fn lexicon_doc() -> LexiconDoc<'static> {
222 lexicon_doc_tools_ozone_server_getConfig()
223 }
224 fn validate(&self) -> Result<(), ConstraintError> {
225 Ok(())
226 }
227}
228
229fn lexicon_doc_tools_ozone_server_getConfig() -> LexiconDoc<'static> {
230 #[allow(unused_imports)]
231 use jacquard_common::{CowStr, deps::smol_str::SmolStr, types::blob::MimeType};
232 use jacquard_lexicon::lexicon::*;
233 use alloc::collections::BTreeMap;
234 LexiconDoc {
235 lexicon: Lexicon::Lexicon1,
236 id: CowStr::new_static("tools.ozone.server.getConfig"),
237 defs: {
238 let mut map = BTreeMap::new();
239 map.insert(
240 SmolStr::new_static("main"),
241 LexUserType::XrpcQuery(LexXrpcQuery {
242 parameters: None,
243 ..Default::default()
244 }),
245 );
246 map.insert(
247 SmolStr::new_static("serviceConfig"),
248 LexUserType::Object(LexObject {
249 properties: {
250 #[allow(unused_mut)]
251 let mut map = BTreeMap::new();
252 map.insert(
253 SmolStr::new_static("url"),
254 LexObjectProperty::String(LexString {
255 format: Some(LexStringFormat::Uri),
256 ..Default::default()
257 }),
258 );
259 map
260 },
261 ..Default::default()
262 }),
263 );
264 map.insert(
265 SmolStr::new_static("viewerConfig"),
266 LexUserType::Object(LexObject {
267 properties: {
268 #[allow(unused_mut)]
269 let mut map = BTreeMap::new();
270 map.insert(
271 SmolStr::new_static("role"),
272 LexObjectProperty::String(LexString { ..Default::default() }),
273 );
274 map
275 },
276 ..Default::default()
277 }),
278 );
279 map
280 },
281 ..Default::default()
282 }
283}