A better Rust ATProto crate
at oauth 6.6 kB view raw
1// @generated by jacquard-lexicon. DO NOT EDIT. 2// 3// Lexicon: com.atproto.moderation.createReport 4// 5// This file was automatically generated from Lexicon schemas. 6// Any manual changes will be overwritten on the next regeneration. 7 8#[jacquard_derive::lexicon] 9#[derive( 10 serde::Serialize, 11 serde::Deserialize, 12 Debug, 13 Clone, 14 PartialEq, 15 Eq, 16 bon::Builder 17)] 18#[serde(rename_all = "camelCase")] 19#[builder(start_fn = new)] 20pub struct CreateReport<'a> { 21 #[serde(skip_serializing_if = "std::option::Option::is_none")] 22 #[serde(borrow)] 23 pub mod_tool: std::option::Option<jacquard_common::types::value::Data<'a>>, 24 ///Additional context about the content and violation. 25 #[serde(skip_serializing_if = "std::option::Option::is_none")] 26 #[serde(borrow)] 27 #[builder(into)] 28 pub reason: std::option::Option<jacquard_common::CowStr<'a>>, 29 ///Indicates the broad category of violation the report is for. 30 #[serde(borrow)] 31 pub reason_type: crate::com_atproto::moderation::ReasonType<'a>, 32 #[serde(borrow)] 33 pub subject: CreateReportRecordSubject<'a>, 34 #[serde(flatten)] 35 #[serde(borrow)] 36 #[builder(default)] 37 pub extra_data: ::std::collections::BTreeMap< 38 ::jacquard_common::smol_str::SmolStr, 39 ::jacquard_common::types::value::Data<'a>, 40 >, 41} 42 43#[jacquard_derive::open_union] 44#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] 45#[serde(tag = "$type")] 46#[serde(bound(deserialize = "'de: 'a"))] 47pub enum CreateReportRecordSubject<'a> { 48 #[serde(rename = "com.atproto.admin.defs#repoRef")] 49 DefsRepoRef(Box<crate::com_atproto::admin::RepoRef<'a>>), 50 #[serde(rename = "com.atproto.repo.strongRef")] 51 StrongRef(Box<crate::com_atproto::repo::strong_ref::StrongRef<'a>>), 52} 53 54impl jacquard_common::IntoStatic for CreateReportRecordSubject<'_> { 55 type Output = CreateReportRecordSubject<'static>; 56 fn into_static(self) -> Self::Output { 57 match self { 58 CreateReportRecordSubject::DefsRepoRef(v) => { 59 CreateReportRecordSubject::DefsRepoRef(v.into_static()) 60 } 61 CreateReportRecordSubject::StrongRef(v) => { 62 CreateReportRecordSubject::StrongRef(v.into_static()) 63 } 64 CreateReportRecordSubject::Unknown(v) => { 65 CreateReportRecordSubject::Unknown(v.into_static()) 66 } 67 } 68 } 69} 70 71impl jacquard_common::IntoStatic for CreateReport<'_> { 72 type Output = CreateReport<'static>; 73 fn into_static(self) -> Self::Output { 74 CreateReport { 75 mod_tool: self.mod_tool.into_static(), 76 reason: self.reason.into_static(), 77 reason_type: self.reason_type.into_static(), 78 subject: self.subject.into_static(), 79 extra_data: self.extra_data.into_static(), 80 } 81 } 82} 83 84#[jacquard_derive::lexicon] 85#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] 86#[serde(rename_all = "camelCase")] 87pub struct CreateReportOutput<'a> { 88 pub created_at: jacquard_common::types::string::Datetime, 89 pub id: i64, 90 #[serde(skip_serializing_if = "std::option::Option::is_none")] 91 #[serde(borrow)] 92 pub reason: std::option::Option<jacquard_common::CowStr<'a>>, 93 #[serde(borrow)] 94 pub reason_type: crate::com_atproto::moderation::ReasonType<'a>, 95 #[serde(borrow)] 96 pub reported_by: jacquard_common::types::string::Did<'a>, 97 #[serde(borrow)] 98 pub subject: CreateReportOutputRecordSubject<'a>, 99} 100 101#[jacquard_derive::open_union] 102#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] 103#[serde(tag = "$type")] 104#[serde(bound(deserialize = "'de: 'a"))] 105pub enum CreateReportOutputRecordSubject<'a> { 106 #[serde(rename = "com.atproto.admin.defs#repoRef")] 107 DefsRepoRef(Box<crate::com_atproto::admin::RepoRef<'a>>), 108 #[serde(rename = "com.atproto.repo.strongRef")] 109 StrongRef(Box<crate::com_atproto::repo::strong_ref::StrongRef<'a>>), 110} 111 112impl jacquard_common::IntoStatic for CreateReportOutputRecordSubject<'_> { 113 type Output = CreateReportOutputRecordSubject<'static>; 114 fn into_static(self) -> Self::Output { 115 match self { 116 CreateReportOutputRecordSubject::DefsRepoRef(v) => { 117 CreateReportOutputRecordSubject::DefsRepoRef(v.into_static()) 118 } 119 CreateReportOutputRecordSubject::StrongRef(v) => { 120 CreateReportOutputRecordSubject::StrongRef(v.into_static()) 121 } 122 CreateReportOutputRecordSubject::Unknown(v) => { 123 CreateReportOutputRecordSubject::Unknown(v.into_static()) 124 } 125 } 126 } 127} 128 129impl jacquard_common::IntoStatic for CreateReportOutput<'_> { 130 type Output = CreateReportOutput<'static>; 131 fn into_static(self) -> Self::Output { 132 CreateReportOutput { 133 created_at: self.created_at.into_static(), 134 id: self.id.into_static(), 135 reason: self.reason.into_static(), 136 reason_type: self.reason_type.into_static(), 137 reported_by: self.reported_by.into_static(), 138 subject: self.subject.into_static(), 139 extra_data: self.extra_data.into_static(), 140 } 141 } 142} 143 144impl jacquard_common::types::xrpc::XrpcRequest for CreateReport<'_> { 145 const NSID: &'static str = "com.atproto.moderation.createReport"; 146 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 147 "application/json", 148 ); 149 const OUTPUT_ENCODING: &'static str = "application/json"; 150 type Output<'de> = CreateReportOutput<'de>; 151 type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 152} 153 154///Moderation tool information for tracing the source of the action 155#[jacquard_derive::lexicon] 156#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] 157#[serde(rename_all = "camelCase")] 158pub struct ModTool<'a> { 159 ///Additional arbitrary metadata about the source 160 #[serde(skip_serializing_if = "std::option::Option::is_none")] 161 #[serde(borrow)] 162 pub meta: std::option::Option<jacquard_common::types::value::Data<'a>>, 163 ///Name/identifier of the source (e.g., 'bsky-app/android', 'bsky-web/chrome') 164 #[serde(borrow)] 165 pub name: jacquard_common::CowStr<'a>, 166} 167 168impl jacquard_common::IntoStatic for ModTool<'_> { 169 type Output = ModTool<'static>; 170 fn into_static(self) -> Self::Output { 171 ModTool { 172 meta: self.meta.into_static(), 173 name: self.name.into_static(), 174 extra_data: self.extra_data.into_static(), 175 } 176 } 177}