1pub mod create_report;
9
10use jacquard_common::CowStr;
11use jacquard_derive::IntoStatic;
12use serde::{Serialize, Deserialize};
13#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Hash)]
16pub struct ReasonAppeal;
17impl core::fmt::Display for ReasonAppeal {
18 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19 write!(f, "reasonAppeal")
20 }
21}
22
23#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Hash)]
26pub struct ReasonMisleading;
27impl core::fmt::Display for ReasonMisleading {
28 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
29 write!(f, "reasonMisleading")
30 }
31}
32
33#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Hash)]
36pub struct ReasonOther;
37impl core::fmt::Display for ReasonOther {
38 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
39 write!(f, "reasonOther")
40 }
41}
42
43#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Hash)]
46pub struct ReasonRude;
47impl core::fmt::Display for ReasonRude {
48 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
49 write!(f, "reasonRude")
50 }
51}
52
53#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Hash)]
56pub struct ReasonSexual;
57impl core::fmt::Display for ReasonSexual {
58 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
59 write!(f, "reasonSexual")
60 }
61}
62
63#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Hash)]
66pub struct ReasonSpam;
67impl core::fmt::Display for ReasonSpam {
68 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
69 write!(f, "reasonSpam")
70 }
71}
72
73
74#[derive(Debug, Clone, PartialEq, Eq, Hash)]
75pub enum ReasonType<'a> {
76 ComAtprotoModerationDefsReasonSpam,
77 ComAtprotoModerationDefsReasonViolation,
78 ComAtprotoModerationDefsReasonMisleading,
79 ComAtprotoModerationDefsReasonSexual,
80 ComAtprotoModerationDefsReasonRude,
81 ComAtprotoModerationDefsReasonOther,
82 ComAtprotoModerationDefsReasonAppeal,
83 ToolsOzoneReportDefsReasonAppeal,
84 ToolsOzoneReportDefsReasonOther,
85 ToolsOzoneReportDefsReasonViolenceAnimal,
86 ToolsOzoneReportDefsReasonViolenceThreats,
87 ToolsOzoneReportDefsReasonViolenceGraphicContent,
88 ToolsOzoneReportDefsReasonViolenceGlorification,
89 ToolsOzoneReportDefsReasonViolenceExtremistContent,
90 ToolsOzoneReportDefsReasonViolenceTrafficking,
91 ToolsOzoneReportDefsReasonViolenceOther,
92 ToolsOzoneReportDefsReasonSexualAbuseContent,
93 ToolsOzoneReportDefsReasonSexualNcii,
94 ToolsOzoneReportDefsReasonSexualDeepfake,
95 ToolsOzoneReportDefsReasonSexualAnimal,
96 ToolsOzoneReportDefsReasonSexualUnlabeled,
97 ToolsOzoneReportDefsReasonSexualOther,
98 ToolsOzoneReportDefsReasonChildSafetyCsam,
99 ToolsOzoneReportDefsReasonChildSafetyGroom,
100 ToolsOzoneReportDefsReasonChildSafetyPrivacy,
101 ToolsOzoneReportDefsReasonChildSafetyHarassment,
102 ToolsOzoneReportDefsReasonChildSafetyOther,
103 ToolsOzoneReportDefsReasonHarassmentTroll,
104 ToolsOzoneReportDefsReasonHarassmentTargeted,
105 ToolsOzoneReportDefsReasonHarassmentHateSpeech,
106 ToolsOzoneReportDefsReasonHarassmentDoxxing,
107 ToolsOzoneReportDefsReasonHarassmentOther,
108 ToolsOzoneReportDefsReasonMisleadingBot,
109 ToolsOzoneReportDefsReasonMisleadingImpersonation,
110 ToolsOzoneReportDefsReasonMisleadingSpam,
111 ToolsOzoneReportDefsReasonMisleadingScam,
112 ToolsOzoneReportDefsReasonMisleadingElections,
113 ToolsOzoneReportDefsReasonMisleadingOther,
114 ToolsOzoneReportDefsReasonRuleSiteSecurity,
115 ToolsOzoneReportDefsReasonRuleProhibitedSales,
116 ToolsOzoneReportDefsReasonRuleBanEvasion,
117 ToolsOzoneReportDefsReasonRuleOther,
118 ToolsOzoneReportDefsReasonSelfHarmContent,
119 ToolsOzoneReportDefsReasonSelfHarmEd,
120 ToolsOzoneReportDefsReasonSelfHarmStunts,
121 ToolsOzoneReportDefsReasonSelfHarmSubstances,
122 ToolsOzoneReportDefsReasonSelfHarmOther,
123 Other(CowStr<'a>),
124}
125
126impl<'a> ReasonType<'a> {
127 pub fn as_str(&self) -> &str {
128 match self {
129 Self::ComAtprotoModerationDefsReasonSpam => {
130 "com.atproto.moderation.defs#reasonSpam"
131 }
132 Self::ComAtprotoModerationDefsReasonViolation => {
133 "com.atproto.moderation.defs#reasonViolation"
134 }
135 Self::ComAtprotoModerationDefsReasonMisleading => {
136 "com.atproto.moderation.defs#reasonMisleading"
137 }
138 Self::ComAtprotoModerationDefsReasonSexual => {
139 "com.atproto.moderation.defs#reasonSexual"
140 }
141 Self::ComAtprotoModerationDefsReasonRude => {
142 "com.atproto.moderation.defs#reasonRude"
143 }
144 Self::ComAtprotoModerationDefsReasonOther => {
145 "com.atproto.moderation.defs#reasonOther"
146 }
147 Self::ComAtprotoModerationDefsReasonAppeal => {
148 "com.atproto.moderation.defs#reasonAppeal"
149 }
150 Self::ToolsOzoneReportDefsReasonAppeal => {
151 "tools.ozone.report.defs#reasonAppeal"
152 }
153 Self::ToolsOzoneReportDefsReasonOther => {
154 "tools.ozone.report.defs#reasonOther"
155 }
156 Self::ToolsOzoneReportDefsReasonViolenceAnimal => {
157 "tools.ozone.report.defs#reasonViolenceAnimal"
158 }
159 Self::ToolsOzoneReportDefsReasonViolenceThreats => {
160 "tools.ozone.report.defs#reasonViolenceThreats"
161 }
162 Self::ToolsOzoneReportDefsReasonViolenceGraphicContent => {
163 "tools.ozone.report.defs#reasonViolenceGraphicContent"
164 }
165 Self::ToolsOzoneReportDefsReasonViolenceGlorification => {
166 "tools.ozone.report.defs#reasonViolenceGlorification"
167 }
168 Self::ToolsOzoneReportDefsReasonViolenceExtremistContent => {
169 "tools.ozone.report.defs#reasonViolenceExtremistContent"
170 }
171 Self::ToolsOzoneReportDefsReasonViolenceTrafficking => {
172 "tools.ozone.report.defs#reasonViolenceTrafficking"
173 }
174 Self::ToolsOzoneReportDefsReasonViolenceOther => {
175 "tools.ozone.report.defs#reasonViolenceOther"
176 }
177 Self::ToolsOzoneReportDefsReasonSexualAbuseContent => {
178 "tools.ozone.report.defs#reasonSexualAbuseContent"
179 }
180 Self::ToolsOzoneReportDefsReasonSexualNcii => {
181 "tools.ozone.report.defs#reasonSexualNCII"
182 }
183 Self::ToolsOzoneReportDefsReasonSexualDeepfake => {
184 "tools.ozone.report.defs#reasonSexualDeepfake"
185 }
186 Self::ToolsOzoneReportDefsReasonSexualAnimal => {
187 "tools.ozone.report.defs#reasonSexualAnimal"
188 }
189 Self::ToolsOzoneReportDefsReasonSexualUnlabeled => {
190 "tools.ozone.report.defs#reasonSexualUnlabeled"
191 }
192 Self::ToolsOzoneReportDefsReasonSexualOther => {
193 "tools.ozone.report.defs#reasonSexualOther"
194 }
195 Self::ToolsOzoneReportDefsReasonChildSafetyCsam => {
196 "tools.ozone.report.defs#reasonChildSafetyCSAM"
197 }
198 Self::ToolsOzoneReportDefsReasonChildSafetyGroom => {
199 "tools.ozone.report.defs#reasonChildSafetyGroom"
200 }
201 Self::ToolsOzoneReportDefsReasonChildSafetyPrivacy => {
202 "tools.ozone.report.defs#reasonChildSafetyPrivacy"
203 }
204 Self::ToolsOzoneReportDefsReasonChildSafetyHarassment => {
205 "tools.ozone.report.defs#reasonChildSafetyHarassment"
206 }
207 Self::ToolsOzoneReportDefsReasonChildSafetyOther => {
208 "tools.ozone.report.defs#reasonChildSafetyOther"
209 }
210 Self::ToolsOzoneReportDefsReasonHarassmentTroll => {
211 "tools.ozone.report.defs#reasonHarassmentTroll"
212 }
213 Self::ToolsOzoneReportDefsReasonHarassmentTargeted => {
214 "tools.ozone.report.defs#reasonHarassmentTargeted"
215 }
216 Self::ToolsOzoneReportDefsReasonHarassmentHateSpeech => {
217 "tools.ozone.report.defs#reasonHarassmentHateSpeech"
218 }
219 Self::ToolsOzoneReportDefsReasonHarassmentDoxxing => {
220 "tools.ozone.report.defs#reasonHarassmentDoxxing"
221 }
222 Self::ToolsOzoneReportDefsReasonHarassmentOther => {
223 "tools.ozone.report.defs#reasonHarassmentOther"
224 }
225 Self::ToolsOzoneReportDefsReasonMisleadingBot => {
226 "tools.ozone.report.defs#reasonMisleadingBot"
227 }
228 Self::ToolsOzoneReportDefsReasonMisleadingImpersonation => {
229 "tools.ozone.report.defs#reasonMisleadingImpersonation"
230 }
231 Self::ToolsOzoneReportDefsReasonMisleadingSpam => {
232 "tools.ozone.report.defs#reasonMisleadingSpam"
233 }
234 Self::ToolsOzoneReportDefsReasonMisleadingScam => {
235 "tools.ozone.report.defs#reasonMisleadingScam"
236 }
237 Self::ToolsOzoneReportDefsReasonMisleadingElections => {
238 "tools.ozone.report.defs#reasonMisleadingElections"
239 }
240 Self::ToolsOzoneReportDefsReasonMisleadingOther => {
241 "tools.ozone.report.defs#reasonMisleadingOther"
242 }
243 Self::ToolsOzoneReportDefsReasonRuleSiteSecurity => {
244 "tools.ozone.report.defs#reasonRuleSiteSecurity"
245 }
246 Self::ToolsOzoneReportDefsReasonRuleProhibitedSales => {
247 "tools.ozone.report.defs#reasonRuleProhibitedSales"
248 }
249 Self::ToolsOzoneReportDefsReasonRuleBanEvasion => {
250 "tools.ozone.report.defs#reasonRuleBanEvasion"
251 }
252 Self::ToolsOzoneReportDefsReasonRuleOther => {
253 "tools.ozone.report.defs#reasonRuleOther"
254 }
255 Self::ToolsOzoneReportDefsReasonSelfHarmContent => {
256 "tools.ozone.report.defs#reasonSelfHarmContent"
257 }
258 Self::ToolsOzoneReportDefsReasonSelfHarmEd => {
259 "tools.ozone.report.defs#reasonSelfHarmED"
260 }
261 Self::ToolsOzoneReportDefsReasonSelfHarmStunts => {
262 "tools.ozone.report.defs#reasonSelfHarmStunts"
263 }
264 Self::ToolsOzoneReportDefsReasonSelfHarmSubstances => {
265 "tools.ozone.report.defs#reasonSelfHarmSubstances"
266 }
267 Self::ToolsOzoneReportDefsReasonSelfHarmOther => {
268 "tools.ozone.report.defs#reasonSelfHarmOther"
269 }
270 Self::Other(s) => s.as_ref(),
271 }
272 }
273}
274
275impl<'a> From<&'a str> for ReasonType<'a> {
276 fn from(s: &'a str) -> Self {
277 match s {
278 "com.atproto.moderation.defs#reasonSpam" => {
279 Self::ComAtprotoModerationDefsReasonSpam
280 }
281 "com.atproto.moderation.defs#reasonViolation" => {
282 Self::ComAtprotoModerationDefsReasonViolation
283 }
284 "com.atproto.moderation.defs#reasonMisleading" => {
285 Self::ComAtprotoModerationDefsReasonMisleading
286 }
287 "com.atproto.moderation.defs#reasonSexual" => {
288 Self::ComAtprotoModerationDefsReasonSexual
289 }
290 "com.atproto.moderation.defs#reasonRude" => {
291 Self::ComAtprotoModerationDefsReasonRude
292 }
293 "com.atproto.moderation.defs#reasonOther" => {
294 Self::ComAtprotoModerationDefsReasonOther
295 }
296 "com.atproto.moderation.defs#reasonAppeal" => {
297 Self::ComAtprotoModerationDefsReasonAppeal
298 }
299 "tools.ozone.report.defs#reasonAppeal" => {
300 Self::ToolsOzoneReportDefsReasonAppeal
301 }
302 "tools.ozone.report.defs#reasonOther" => {
303 Self::ToolsOzoneReportDefsReasonOther
304 }
305 "tools.ozone.report.defs#reasonViolenceAnimal" => {
306 Self::ToolsOzoneReportDefsReasonViolenceAnimal
307 }
308 "tools.ozone.report.defs#reasonViolenceThreats" => {
309 Self::ToolsOzoneReportDefsReasonViolenceThreats
310 }
311 "tools.ozone.report.defs#reasonViolenceGraphicContent" => {
312 Self::ToolsOzoneReportDefsReasonViolenceGraphicContent
313 }
314 "tools.ozone.report.defs#reasonViolenceGlorification" => {
315 Self::ToolsOzoneReportDefsReasonViolenceGlorification
316 }
317 "tools.ozone.report.defs#reasonViolenceExtremistContent" => {
318 Self::ToolsOzoneReportDefsReasonViolenceExtremistContent
319 }
320 "tools.ozone.report.defs#reasonViolenceTrafficking" => {
321 Self::ToolsOzoneReportDefsReasonViolenceTrafficking
322 }
323 "tools.ozone.report.defs#reasonViolenceOther" => {
324 Self::ToolsOzoneReportDefsReasonViolenceOther
325 }
326 "tools.ozone.report.defs#reasonSexualAbuseContent" => {
327 Self::ToolsOzoneReportDefsReasonSexualAbuseContent
328 }
329 "tools.ozone.report.defs#reasonSexualNCII" => {
330 Self::ToolsOzoneReportDefsReasonSexualNcii
331 }
332 "tools.ozone.report.defs#reasonSexualDeepfake" => {
333 Self::ToolsOzoneReportDefsReasonSexualDeepfake
334 }
335 "tools.ozone.report.defs#reasonSexualAnimal" => {
336 Self::ToolsOzoneReportDefsReasonSexualAnimal
337 }
338 "tools.ozone.report.defs#reasonSexualUnlabeled" => {
339 Self::ToolsOzoneReportDefsReasonSexualUnlabeled
340 }
341 "tools.ozone.report.defs#reasonSexualOther" => {
342 Self::ToolsOzoneReportDefsReasonSexualOther
343 }
344 "tools.ozone.report.defs#reasonChildSafetyCSAM" => {
345 Self::ToolsOzoneReportDefsReasonChildSafetyCsam
346 }
347 "tools.ozone.report.defs#reasonChildSafetyGroom" => {
348 Self::ToolsOzoneReportDefsReasonChildSafetyGroom
349 }
350 "tools.ozone.report.defs#reasonChildSafetyPrivacy" => {
351 Self::ToolsOzoneReportDefsReasonChildSafetyPrivacy
352 }
353 "tools.ozone.report.defs#reasonChildSafetyHarassment" => {
354 Self::ToolsOzoneReportDefsReasonChildSafetyHarassment
355 }
356 "tools.ozone.report.defs#reasonChildSafetyOther" => {
357 Self::ToolsOzoneReportDefsReasonChildSafetyOther
358 }
359 "tools.ozone.report.defs#reasonHarassmentTroll" => {
360 Self::ToolsOzoneReportDefsReasonHarassmentTroll
361 }
362 "tools.ozone.report.defs#reasonHarassmentTargeted" => {
363 Self::ToolsOzoneReportDefsReasonHarassmentTargeted
364 }
365 "tools.ozone.report.defs#reasonHarassmentHateSpeech" => {
366 Self::ToolsOzoneReportDefsReasonHarassmentHateSpeech
367 }
368 "tools.ozone.report.defs#reasonHarassmentDoxxing" => {
369 Self::ToolsOzoneReportDefsReasonHarassmentDoxxing
370 }
371 "tools.ozone.report.defs#reasonHarassmentOther" => {
372 Self::ToolsOzoneReportDefsReasonHarassmentOther
373 }
374 "tools.ozone.report.defs#reasonMisleadingBot" => {
375 Self::ToolsOzoneReportDefsReasonMisleadingBot
376 }
377 "tools.ozone.report.defs#reasonMisleadingImpersonation" => {
378 Self::ToolsOzoneReportDefsReasonMisleadingImpersonation
379 }
380 "tools.ozone.report.defs#reasonMisleadingSpam" => {
381 Self::ToolsOzoneReportDefsReasonMisleadingSpam
382 }
383 "tools.ozone.report.defs#reasonMisleadingScam" => {
384 Self::ToolsOzoneReportDefsReasonMisleadingScam
385 }
386 "tools.ozone.report.defs#reasonMisleadingElections" => {
387 Self::ToolsOzoneReportDefsReasonMisleadingElections
388 }
389 "tools.ozone.report.defs#reasonMisleadingOther" => {
390 Self::ToolsOzoneReportDefsReasonMisleadingOther
391 }
392 "tools.ozone.report.defs#reasonRuleSiteSecurity" => {
393 Self::ToolsOzoneReportDefsReasonRuleSiteSecurity
394 }
395 "tools.ozone.report.defs#reasonRuleProhibitedSales" => {
396 Self::ToolsOzoneReportDefsReasonRuleProhibitedSales
397 }
398 "tools.ozone.report.defs#reasonRuleBanEvasion" => {
399 Self::ToolsOzoneReportDefsReasonRuleBanEvasion
400 }
401 "tools.ozone.report.defs#reasonRuleOther" => {
402 Self::ToolsOzoneReportDefsReasonRuleOther
403 }
404 "tools.ozone.report.defs#reasonSelfHarmContent" => {
405 Self::ToolsOzoneReportDefsReasonSelfHarmContent
406 }
407 "tools.ozone.report.defs#reasonSelfHarmED" => {
408 Self::ToolsOzoneReportDefsReasonSelfHarmEd
409 }
410 "tools.ozone.report.defs#reasonSelfHarmStunts" => {
411 Self::ToolsOzoneReportDefsReasonSelfHarmStunts
412 }
413 "tools.ozone.report.defs#reasonSelfHarmSubstances" => {
414 Self::ToolsOzoneReportDefsReasonSelfHarmSubstances
415 }
416 "tools.ozone.report.defs#reasonSelfHarmOther" => {
417 Self::ToolsOzoneReportDefsReasonSelfHarmOther
418 }
419 _ => Self::Other(CowStr::from(s)),
420 }
421 }
422}
423
424impl<'a> From<String> for ReasonType<'a> {
425 fn from(s: String) -> Self {
426 match s.as_str() {
427 "com.atproto.moderation.defs#reasonSpam" => {
428 Self::ComAtprotoModerationDefsReasonSpam
429 }
430 "com.atproto.moderation.defs#reasonViolation" => {
431 Self::ComAtprotoModerationDefsReasonViolation
432 }
433 "com.atproto.moderation.defs#reasonMisleading" => {
434 Self::ComAtprotoModerationDefsReasonMisleading
435 }
436 "com.atproto.moderation.defs#reasonSexual" => {
437 Self::ComAtprotoModerationDefsReasonSexual
438 }
439 "com.atproto.moderation.defs#reasonRude" => {
440 Self::ComAtprotoModerationDefsReasonRude
441 }
442 "com.atproto.moderation.defs#reasonOther" => {
443 Self::ComAtprotoModerationDefsReasonOther
444 }
445 "com.atproto.moderation.defs#reasonAppeal" => {
446 Self::ComAtprotoModerationDefsReasonAppeal
447 }
448 "tools.ozone.report.defs#reasonAppeal" => {
449 Self::ToolsOzoneReportDefsReasonAppeal
450 }
451 "tools.ozone.report.defs#reasonOther" => {
452 Self::ToolsOzoneReportDefsReasonOther
453 }
454 "tools.ozone.report.defs#reasonViolenceAnimal" => {
455 Self::ToolsOzoneReportDefsReasonViolenceAnimal
456 }
457 "tools.ozone.report.defs#reasonViolenceThreats" => {
458 Self::ToolsOzoneReportDefsReasonViolenceThreats
459 }
460 "tools.ozone.report.defs#reasonViolenceGraphicContent" => {
461 Self::ToolsOzoneReportDefsReasonViolenceGraphicContent
462 }
463 "tools.ozone.report.defs#reasonViolenceGlorification" => {
464 Self::ToolsOzoneReportDefsReasonViolenceGlorification
465 }
466 "tools.ozone.report.defs#reasonViolenceExtremistContent" => {
467 Self::ToolsOzoneReportDefsReasonViolenceExtremistContent
468 }
469 "tools.ozone.report.defs#reasonViolenceTrafficking" => {
470 Self::ToolsOzoneReportDefsReasonViolenceTrafficking
471 }
472 "tools.ozone.report.defs#reasonViolenceOther" => {
473 Self::ToolsOzoneReportDefsReasonViolenceOther
474 }
475 "tools.ozone.report.defs#reasonSexualAbuseContent" => {
476 Self::ToolsOzoneReportDefsReasonSexualAbuseContent
477 }
478 "tools.ozone.report.defs#reasonSexualNCII" => {
479 Self::ToolsOzoneReportDefsReasonSexualNcii
480 }
481 "tools.ozone.report.defs#reasonSexualDeepfake" => {
482 Self::ToolsOzoneReportDefsReasonSexualDeepfake
483 }
484 "tools.ozone.report.defs#reasonSexualAnimal" => {
485 Self::ToolsOzoneReportDefsReasonSexualAnimal
486 }
487 "tools.ozone.report.defs#reasonSexualUnlabeled" => {
488 Self::ToolsOzoneReportDefsReasonSexualUnlabeled
489 }
490 "tools.ozone.report.defs#reasonSexualOther" => {
491 Self::ToolsOzoneReportDefsReasonSexualOther
492 }
493 "tools.ozone.report.defs#reasonChildSafetyCSAM" => {
494 Self::ToolsOzoneReportDefsReasonChildSafetyCsam
495 }
496 "tools.ozone.report.defs#reasonChildSafetyGroom" => {
497 Self::ToolsOzoneReportDefsReasonChildSafetyGroom
498 }
499 "tools.ozone.report.defs#reasonChildSafetyPrivacy" => {
500 Self::ToolsOzoneReportDefsReasonChildSafetyPrivacy
501 }
502 "tools.ozone.report.defs#reasonChildSafetyHarassment" => {
503 Self::ToolsOzoneReportDefsReasonChildSafetyHarassment
504 }
505 "tools.ozone.report.defs#reasonChildSafetyOther" => {
506 Self::ToolsOzoneReportDefsReasonChildSafetyOther
507 }
508 "tools.ozone.report.defs#reasonHarassmentTroll" => {
509 Self::ToolsOzoneReportDefsReasonHarassmentTroll
510 }
511 "tools.ozone.report.defs#reasonHarassmentTargeted" => {
512 Self::ToolsOzoneReportDefsReasonHarassmentTargeted
513 }
514 "tools.ozone.report.defs#reasonHarassmentHateSpeech" => {
515 Self::ToolsOzoneReportDefsReasonHarassmentHateSpeech
516 }
517 "tools.ozone.report.defs#reasonHarassmentDoxxing" => {
518 Self::ToolsOzoneReportDefsReasonHarassmentDoxxing
519 }
520 "tools.ozone.report.defs#reasonHarassmentOther" => {
521 Self::ToolsOzoneReportDefsReasonHarassmentOther
522 }
523 "tools.ozone.report.defs#reasonMisleadingBot" => {
524 Self::ToolsOzoneReportDefsReasonMisleadingBot
525 }
526 "tools.ozone.report.defs#reasonMisleadingImpersonation" => {
527 Self::ToolsOzoneReportDefsReasonMisleadingImpersonation
528 }
529 "tools.ozone.report.defs#reasonMisleadingSpam" => {
530 Self::ToolsOzoneReportDefsReasonMisleadingSpam
531 }
532 "tools.ozone.report.defs#reasonMisleadingScam" => {
533 Self::ToolsOzoneReportDefsReasonMisleadingScam
534 }
535 "tools.ozone.report.defs#reasonMisleadingElections" => {
536 Self::ToolsOzoneReportDefsReasonMisleadingElections
537 }
538 "tools.ozone.report.defs#reasonMisleadingOther" => {
539 Self::ToolsOzoneReportDefsReasonMisleadingOther
540 }
541 "tools.ozone.report.defs#reasonRuleSiteSecurity" => {
542 Self::ToolsOzoneReportDefsReasonRuleSiteSecurity
543 }
544 "tools.ozone.report.defs#reasonRuleProhibitedSales" => {
545 Self::ToolsOzoneReportDefsReasonRuleProhibitedSales
546 }
547 "tools.ozone.report.defs#reasonRuleBanEvasion" => {
548 Self::ToolsOzoneReportDefsReasonRuleBanEvasion
549 }
550 "tools.ozone.report.defs#reasonRuleOther" => {
551 Self::ToolsOzoneReportDefsReasonRuleOther
552 }
553 "tools.ozone.report.defs#reasonSelfHarmContent" => {
554 Self::ToolsOzoneReportDefsReasonSelfHarmContent
555 }
556 "tools.ozone.report.defs#reasonSelfHarmED" => {
557 Self::ToolsOzoneReportDefsReasonSelfHarmEd
558 }
559 "tools.ozone.report.defs#reasonSelfHarmStunts" => {
560 Self::ToolsOzoneReportDefsReasonSelfHarmStunts
561 }
562 "tools.ozone.report.defs#reasonSelfHarmSubstances" => {
563 Self::ToolsOzoneReportDefsReasonSelfHarmSubstances
564 }
565 "tools.ozone.report.defs#reasonSelfHarmOther" => {
566 Self::ToolsOzoneReportDefsReasonSelfHarmOther
567 }
568 _ => Self::Other(CowStr::from(s)),
569 }
570 }
571}
572
573impl<'a> AsRef<str> for ReasonType<'a> {
574 fn as_ref(&self) -> &str {
575 self.as_str()
576 }
577}
578
579impl<'a> core::fmt::Display for ReasonType<'a> {
580 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
581 write!(f, "{}", self.as_str())
582 }
583}
584
585impl<'a> serde::Serialize for ReasonType<'a> {
586 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
587 where
588 S: serde::Serializer,
589 {
590 serializer.serialize_str(self.as_str())
591 }
592}
593
594impl<'de, 'a> serde::Deserialize<'de> for ReasonType<'a>
595where
596 'de: 'a,
597{
598 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
599 where
600 D: serde::Deserializer<'de>,
601 {
602 let s = <&'de str>::deserialize(deserializer)?;
603 Ok(Self::from(s))
604 }
605}
606
607impl jacquard_common::IntoStatic for ReasonType<'_> {
608 type Output = ReasonType<'static>;
609 fn into_static(self) -> Self::Output {
610 match self {
611 ReasonType::ComAtprotoModerationDefsReasonSpam => {
612 ReasonType::ComAtprotoModerationDefsReasonSpam
613 }
614 ReasonType::ComAtprotoModerationDefsReasonViolation => {
615 ReasonType::ComAtprotoModerationDefsReasonViolation
616 }
617 ReasonType::ComAtprotoModerationDefsReasonMisleading => {
618 ReasonType::ComAtprotoModerationDefsReasonMisleading
619 }
620 ReasonType::ComAtprotoModerationDefsReasonSexual => {
621 ReasonType::ComAtprotoModerationDefsReasonSexual
622 }
623 ReasonType::ComAtprotoModerationDefsReasonRude => {
624 ReasonType::ComAtprotoModerationDefsReasonRude
625 }
626 ReasonType::ComAtprotoModerationDefsReasonOther => {
627 ReasonType::ComAtprotoModerationDefsReasonOther
628 }
629 ReasonType::ComAtprotoModerationDefsReasonAppeal => {
630 ReasonType::ComAtprotoModerationDefsReasonAppeal
631 }
632 ReasonType::ToolsOzoneReportDefsReasonAppeal => {
633 ReasonType::ToolsOzoneReportDefsReasonAppeal
634 }
635 ReasonType::ToolsOzoneReportDefsReasonOther => {
636 ReasonType::ToolsOzoneReportDefsReasonOther
637 }
638 ReasonType::ToolsOzoneReportDefsReasonViolenceAnimal => {
639 ReasonType::ToolsOzoneReportDefsReasonViolenceAnimal
640 }
641 ReasonType::ToolsOzoneReportDefsReasonViolenceThreats => {
642 ReasonType::ToolsOzoneReportDefsReasonViolenceThreats
643 }
644 ReasonType::ToolsOzoneReportDefsReasonViolenceGraphicContent => {
645 ReasonType::ToolsOzoneReportDefsReasonViolenceGraphicContent
646 }
647 ReasonType::ToolsOzoneReportDefsReasonViolenceGlorification => {
648 ReasonType::ToolsOzoneReportDefsReasonViolenceGlorification
649 }
650 ReasonType::ToolsOzoneReportDefsReasonViolenceExtremistContent => {
651 ReasonType::ToolsOzoneReportDefsReasonViolenceExtremistContent
652 }
653 ReasonType::ToolsOzoneReportDefsReasonViolenceTrafficking => {
654 ReasonType::ToolsOzoneReportDefsReasonViolenceTrafficking
655 }
656 ReasonType::ToolsOzoneReportDefsReasonViolenceOther => {
657 ReasonType::ToolsOzoneReportDefsReasonViolenceOther
658 }
659 ReasonType::ToolsOzoneReportDefsReasonSexualAbuseContent => {
660 ReasonType::ToolsOzoneReportDefsReasonSexualAbuseContent
661 }
662 ReasonType::ToolsOzoneReportDefsReasonSexualNcii => {
663 ReasonType::ToolsOzoneReportDefsReasonSexualNcii
664 }
665 ReasonType::ToolsOzoneReportDefsReasonSexualDeepfake => {
666 ReasonType::ToolsOzoneReportDefsReasonSexualDeepfake
667 }
668 ReasonType::ToolsOzoneReportDefsReasonSexualAnimal => {
669 ReasonType::ToolsOzoneReportDefsReasonSexualAnimal
670 }
671 ReasonType::ToolsOzoneReportDefsReasonSexualUnlabeled => {
672 ReasonType::ToolsOzoneReportDefsReasonSexualUnlabeled
673 }
674 ReasonType::ToolsOzoneReportDefsReasonSexualOther => {
675 ReasonType::ToolsOzoneReportDefsReasonSexualOther
676 }
677 ReasonType::ToolsOzoneReportDefsReasonChildSafetyCsam => {
678 ReasonType::ToolsOzoneReportDefsReasonChildSafetyCsam
679 }
680 ReasonType::ToolsOzoneReportDefsReasonChildSafetyGroom => {
681 ReasonType::ToolsOzoneReportDefsReasonChildSafetyGroom
682 }
683 ReasonType::ToolsOzoneReportDefsReasonChildSafetyPrivacy => {
684 ReasonType::ToolsOzoneReportDefsReasonChildSafetyPrivacy
685 }
686 ReasonType::ToolsOzoneReportDefsReasonChildSafetyHarassment => {
687 ReasonType::ToolsOzoneReportDefsReasonChildSafetyHarassment
688 }
689 ReasonType::ToolsOzoneReportDefsReasonChildSafetyOther => {
690 ReasonType::ToolsOzoneReportDefsReasonChildSafetyOther
691 }
692 ReasonType::ToolsOzoneReportDefsReasonHarassmentTroll => {
693 ReasonType::ToolsOzoneReportDefsReasonHarassmentTroll
694 }
695 ReasonType::ToolsOzoneReportDefsReasonHarassmentTargeted => {
696 ReasonType::ToolsOzoneReportDefsReasonHarassmentTargeted
697 }
698 ReasonType::ToolsOzoneReportDefsReasonHarassmentHateSpeech => {
699 ReasonType::ToolsOzoneReportDefsReasonHarassmentHateSpeech
700 }
701 ReasonType::ToolsOzoneReportDefsReasonHarassmentDoxxing => {
702 ReasonType::ToolsOzoneReportDefsReasonHarassmentDoxxing
703 }
704 ReasonType::ToolsOzoneReportDefsReasonHarassmentOther => {
705 ReasonType::ToolsOzoneReportDefsReasonHarassmentOther
706 }
707 ReasonType::ToolsOzoneReportDefsReasonMisleadingBot => {
708 ReasonType::ToolsOzoneReportDefsReasonMisleadingBot
709 }
710 ReasonType::ToolsOzoneReportDefsReasonMisleadingImpersonation => {
711 ReasonType::ToolsOzoneReportDefsReasonMisleadingImpersonation
712 }
713 ReasonType::ToolsOzoneReportDefsReasonMisleadingSpam => {
714 ReasonType::ToolsOzoneReportDefsReasonMisleadingSpam
715 }
716 ReasonType::ToolsOzoneReportDefsReasonMisleadingScam => {
717 ReasonType::ToolsOzoneReportDefsReasonMisleadingScam
718 }
719 ReasonType::ToolsOzoneReportDefsReasonMisleadingElections => {
720 ReasonType::ToolsOzoneReportDefsReasonMisleadingElections
721 }
722 ReasonType::ToolsOzoneReportDefsReasonMisleadingOther => {
723 ReasonType::ToolsOzoneReportDefsReasonMisleadingOther
724 }
725 ReasonType::ToolsOzoneReportDefsReasonRuleSiteSecurity => {
726 ReasonType::ToolsOzoneReportDefsReasonRuleSiteSecurity
727 }
728 ReasonType::ToolsOzoneReportDefsReasonRuleProhibitedSales => {
729 ReasonType::ToolsOzoneReportDefsReasonRuleProhibitedSales
730 }
731 ReasonType::ToolsOzoneReportDefsReasonRuleBanEvasion => {
732 ReasonType::ToolsOzoneReportDefsReasonRuleBanEvasion
733 }
734 ReasonType::ToolsOzoneReportDefsReasonRuleOther => {
735 ReasonType::ToolsOzoneReportDefsReasonRuleOther
736 }
737 ReasonType::ToolsOzoneReportDefsReasonSelfHarmContent => {
738 ReasonType::ToolsOzoneReportDefsReasonSelfHarmContent
739 }
740 ReasonType::ToolsOzoneReportDefsReasonSelfHarmEd => {
741 ReasonType::ToolsOzoneReportDefsReasonSelfHarmEd
742 }
743 ReasonType::ToolsOzoneReportDefsReasonSelfHarmStunts => {
744 ReasonType::ToolsOzoneReportDefsReasonSelfHarmStunts
745 }
746 ReasonType::ToolsOzoneReportDefsReasonSelfHarmSubstances => {
747 ReasonType::ToolsOzoneReportDefsReasonSelfHarmSubstances
748 }
749 ReasonType::ToolsOzoneReportDefsReasonSelfHarmOther => {
750 ReasonType::ToolsOzoneReportDefsReasonSelfHarmOther
751 }
752 ReasonType::Other(v) => ReasonType::Other(v.into_static()),
753 }
754 }
755}
756
757#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Hash)]
760pub struct ReasonViolation;
761impl core::fmt::Display for ReasonViolation {
762 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
763 write!(f, "reasonViolation")
764 }
765}
766
767#[derive(Debug, Clone, PartialEq, Eq, Hash)]
770pub enum SubjectType<'a> {
771 Account,
772 Record,
773 Chat,
774 Other(CowStr<'a>),
775}
776
777impl<'a> SubjectType<'a> {
778 pub fn as_str(&self) -> &str {
779 match self {
780 Self::Account => "account",
781 Self::Record => "record",
782 Self::Chat => "chat",
783 Self::Other(s) => s.as_ref(),
784 }
785 }
786}
787
788impl<'a> From<&'a str> for SubjectType<'a> {
789 fn from(s: &'a str) -> Self {
790 match s {
791 "account" => Self::Account,
792 "record" => Self::Record,
793 "chat" => Self::Chat,
794 _ => Self::Other(CowStr::from(s)),
795 }
796 }
797}
798
799impl<'a> From<String> for SubjectType<'a> {
800 fn from(s: String) -> Self {
801 match s.as_str() {
802 "account" => Self::Account,
803 "record" => Self::Record,
804 "chat" => Self::Chat,
805 _ => Self::Other(CowStr::from(s)),
806 }
807 }
808}
809
810impl<'a> AsRef<str> for SubjectType<'a> {
811 fn as_ref(&self) -> &str {
812 self.as_str()
813 }
814}
815
816impl<'a> core::fmt::Display for SubjectType<'a> {
817 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
818 write!(f, "{}", self.as_str())
819 }
820}
821
822impl<'a> serde::Serialize for SubjectType<'a> {
823 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
824 where
825 S: serde::Serializer,
826 {
827 serializer.serialize_str(self.as_str())
828 }
829}
830
831impl<'de, 'a> serde::Deserialize<'de> for SubjectType<'a>
832where
833 'de: 'a,
834{
835 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
836 where
837 D: serde::Deserializer<'de>,
838 {
839 let s = <&'de str>::deserialize(deserializer)?;
840 Ok(Self::from(s))
841 }
842}
843
844impl jacquard_common::IntoStatic for SubjectType<'_> {
845 type Output = SubjectType<'static>;
846 fn into_static(self) -> Self::Output {
847 match self {
848 SubjectType::Account => SubjectType::Account,
849 SubjectType::Record => SubjectType::Record,
850 SubjectType::Chat => SubjectType::Chat,
851 SubjectType::Other(v) => SubjectType::Other(v.into_static()),
852 }
853 }
854}