A better Rust ATProto crate
at oauth 5.8 kB view raw
1// @generated by jacquard-lexicon. DO NOT EDIT. 2// 3// Lexicon: app.bsky.feed.searchPosts 4// 5// This file was automatically generated from Lexicon schemas. 6// Any manual changes will be overwritten on the next regeneration. 7 8#[derive( 9 serde::Serialize, 10 serde::Deserialize, 11 Debug, 12 Clone, 13 PartialEq, 14 Eq, 15 bon::Builder 16)] 17#[builder(start_fn = new)] 18#[serde(rename_all = "camelCase")] 19pub struct SearchPosts<'a> { 20 #[serde(skip_serializing_if = "std::option::Option::is_none")] 21 #[serde(borrow)] 22 pub author: std::option::Option<jacquard_common::types::ident::AtIdentifier<'a>>, 23 #[serde(skip_serializing_if = "std::option::Option::is_none")] 24 #[serde(borrow)] 25 #[builder(into)] 26 pub cursor: std::option::Option<jacquard_common::CowStr<'a>>, 27 #[serde(skip_serializing_if = "std::option::Option::is_none")] 28 #[serde(borrow)] 29 #[builder(into)] 30 pub domain: std::option::Option<jacquard_common::CowStr<'a>>, 31 #[serde(skip_serializing_if = "std::option::Option::is_none")] 32 pub lang: std::option::Option<jacquard_common::types::string::Language>, 33 ///(default: 25, min: 1, max: 100) 34 #[serde(skip_serializing_if = "std::option::Option::is_none")] 35 pub limit: std::option::Option<i64>, 36 #[serde(skip_serializing_if = "std::option::Option::is_none")] 37 #[serde(borrow)] 38 pub mentions: std::option::Option<jacquard_common::types::ident::AtIdentifier<'a>>, 39 #[serde(borrow)] 40 #[builder(into)] 41 pub q: jacquard_common::CowStr<'a>, 42 #[serde(skip_serializing_if = "std::option::Option::is_none")] 43 #[serde(borrow)] 44 #[builder(into)] 45 pub since: std::option::Option<jacquard_common::CowStr<'a>>, 46 ///(default: "latest") 47 #[serde(skip_serializing_if = "std::option::Option::is_none")] 48 #[serde(borrow)] 49 #[builder(into)] 50 pub sort: std::option::Option<jacquard_common::CowStr<'a>>, 51 #[serde(skip_serializing_if = "std::option::Option::is_none")] 52 #[serde(borrow)] 53 pub tag: std::option::Option<Vec<jacquard_common::CowStr<'a>>>, 54 #[serde(skip_serializing_if = "std::option::Option::is_none")] 55 #[serde(borrow)] 56 #[builder(into)] 57 pub until: std::option::Option<jacquard_common::CowStr<'a>>, 58 #[serde(skip_serializing_if = "std::option::Option::is_none")] 59 #[serde(borrow)] 60 pub url: std::option::Option<jacquard_common::types::string::Uri<'a>>, 61} 62 63impl jacquard_common::IntoStatic for SearchPosts<'_> { 64 type Output = SearchPosts<'static>; 65 fn into_static(self) -> Self::Output { 66 SearchPosts { 67 author: self.author.into_static(), 68 cursor: self.cursor.into_static(), 69 domain: self.domain.into_static(), 70 lang: self.lang.into_static(), 71 limit: self.limit.into_static(), 72 mentions: self.mentions.into_static(), 73 q: self.q.into_static(), 74 since: self.since.into_static(), 75 sort: self.sort.into_static(), 76 tag: self.tag.into_static(), 77 until: self.until.into_static(), 78 url: self.url.into_static(), 79 } 80 } 81} 82 83#[jacquard_derive::lexicon] 84#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] 85#[serde(rename_all = "camelCase")] 86pub struct SearchPostsOutput<'a> { 87 #[serde(skip_serializing_if = "std::option::Option::is_none")] 88 #[serde(borrow)] 89 pub cursor: std::option::Option<jacquard_common::CowStr<'a>>, 90 ///Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits. 91 #[serde(skip_serializing_if = "std::option::Option::is_none")] 92 pub hits_total: std::option::Option<i64>, 93 #[serde(borrow)] 94 pub posts: Vec<crate::app_bsky::feed::PostView<'a>>, 95} 96 97impl jacquard_common::IntoStatic for SearchPostsOutput<'_> { 98 type Output = SearchPostsOutput<'static>; 99 fn into_static(self) -> Self::Output { 100 SearchPostsOutput { 101 cursor: self.cursor.into_static(), 102 hits_total: self.hits_total.into_static(), 103 posts: self.posts.into_static(), 104 extra_data: self.extra_data.into_static(), 105 } 106 } 107} 108 109#[jacquard_derive::open_union] 110#[derive( 111 serde::Serialize, 112 serde::Deserialize, 113 Debug, 114 Clone, 115 PartialEq, 116 Eq, 117 thiserror::Error, 118 miette::Diagnostic 119)] 120#[serde(tag = "error", content = "message")] 121#[serde(bound(deserialize = "'de: 'a"))] 122pub enum SearchPostsError<'a> { 123 #[serde(rename = "BadQueryString")] 124 BadQueryString(std::option::Option<String>), 125} 126 127impl std::fmt::Display for SearchPostsError<'_> { 128 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 129 match self { 130 Self::BadQueryString(msg) => { 131 write!(f, "BadQueryString")?; 132 if let Some(msg) = msg { 133 write!(f, ": {}", msg)?; 134 } 135 Ok(()) 136 } 137 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err), 138 } 139 } 140} 141 142impl jacquard_common::IntoStatic for SearchPostsError<'_> { 143 type Output = SearchPostsError<'static>; 144 fn into_static(self) -> Self::Output { 145 match self { 146 SearchPostsError::BadQueryString(v) => { 147 SearchPostsError::BadQueryString(v.into_static()) 148 } 149 SearchPostsError::Unknown(v) => SearchPostsError::Unknown(v.into_static()), 150 } 151 } 152} 153 154impl jacquard_common::types::xrpc::XrpcRequest for SearchPosts<'_> { 155 const NSID: &'static str = "app.bsky.feed.searchPosts"; 156 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 157 const OUTPUT_ENCODING: &'static str = "application/json"; 158 type Output<'de> = SearchPostsOutput<'de>; 159 type Err<'de> = SearchPostsError<'de>; 160}