Skip to main content

jacquard_api/com_atproto/
moderation.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: com.atproto.moderation.defs
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8pub mod create_report;
9
10use jacquard_common::CowStr;
11use jacquard_derive::IntoStatic;
12use serde::{Serialize, Deserialize};
13/// Appeal a previously taken moderation action
14
15#[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/// Misleading identity, affiliation, or content. Prefer new lexicon definition `tools.ozone.report.defs#reasonMisleadingOther`.
24
25#[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/// Reports not falling under another report category. Prefer new lexicon definition `tools.ozone.report.defs#reasonOther`.
34
35#[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/// Rude, harassing, explicit, or otherwise unwelcoming behavior. Prefer new lexicon definition `tools.ozone.report.defs#reasonHarassmentOther`.
44
45#[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/// Unwanted or mislabeled sexual content. Prefer new lexicon definition `tools.ozone.report.defs#reasonSexualUnlabeled`.
54
55#[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/// Spam: frequent unwanted promotion, replies, mentions. Prefer new lexicon definition `tools.ozone.report.defs#reasonMisleadingSpam`.
64
65#[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/// Direct violation of server rules, laws, terms of service. Prefer new lexicon definition `tools.ozone.report.defs#reasonRuleOther`.
758
759#[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/// Tag describing a type of subject that might be reported.
768
769#[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}