A better Rust ATProto crate
at main 5.0 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 jacquard_derive::IntoStatic 17)] 18#[builder(start_fn = new)] 19#[serde(rename_all = "camelCase")] 20pub struct SearchPosts<'a> { 21 #[serde(skip_serializing_if = "std::option::Option::is_none")] 22 #[serde(borrow)] 23 pub author: std::option::Option<jacquard_common::types::ident::AtIdentifier<'a>>, 24 #[serde(skip_serializing_if = "std::option::Option::is_none")] 25 #[serde(borrow)] 26 #[builder(into)] 27 pub cursor: std::option::Option<jacquard_common::CowStr<'a>>, 28 #[serde(skip_serializing_if = "std::option::Option::is_none")] 29 #[serde(borrow)] 30 #[builder(into)] 31 pub domain: std::option::Option<jacquard_common::CowStr<'a>>, 32 #[serde(skip_serializing_if = "std::option::Option::is_none")] 33 pub lang: std::option::Option<jacquard_common::types::string::Language>, 34 ///(default: 25, min: 1, max: 100) 35 #[serde(skip_serializing_if = "std::option::Option::is_none")] 36 pub limit: std::option::Option<i64>, 37 #[serde(skip_serializing_if = "std::option::Option::is_none")] 38 #[serde(borrow)] 39 pub mentions: std::option::Option<jacquard_common::types::ident::AtIdentifier<'a>>, 40 #[serde(borrow)] 41 #[builder(into)] 42 pub q: jacquard_common::CowStr<'a>, 43 #[serde(skip_serializing_if = "std::option::Option::is_none")] 44 #[serde(borrow)] 45 #[builder(into)] 46 pub since: std::option::Option<jacquard_common::CowStr<'a>>, 47 ///(default: "latest") 48 #[serde(skip_serializing_if = "std::option::Option::is_none")] 49 #[serde(borrow)] 50 #[builder(into)] 51 pub sort: std::option::Option<jacquard_common::CowStr<'a>>, 52 #[serde(skip_serializing_if = "std::option::Option::is_none")] 53 #[serde(borrow)] 54 pub tag: std::option::Option<Vec<jacquard_common::CowStr<'a>>>, 55 #[serde(skip_serializing_if = "std::option::Option::is_none")] 56 #[serde(borrow)] 57 #[builder(into)] 58 pub until: std::option::Option<jacquard_common::CowStr<'a>>, 59 #[serde(skip_serializing_if = "std::option::Option::is_none")] 60 #[serde(borrow)] 61 pub url: std::option::Option<jacquard_common::types::string::Uri<'a>>, 62} 63 64#[jacquard_derive::lexicon] 65#[derive( 66 serde::Serialize, 67 serde::Deserialize, 68 Debug, 69 Clone, 70 PartialEq, 71 Eq, 72 jacquard_derive::IntoStatic 73)] 74#[serde(rename_all = "camelCase")] 75pub struct SearchPostsOutput<'a> { 76 #[serde(skip_serializing_if = "std::option::Option::is_none")] 77 #[serde(borrow)] 78 pub cursor: std::option::Option<jacquard_common::CowStr<'a>>, 79 /// Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits. 80 #[serde(skip_serializing_if = "std::option::Option::is_none")] 81 pub hits_total: std::option::Option<i64>, 82 #[serde(borrow)] 83 pub posts: Vec<crate::app_bsky::feed::PostView<'a>>, 84} 85 86#[jacquard_derive::open_union] 87#[derive( 88 serde::Serialize, 89 serde::Deserialize, 90 Debug, 91 Clone, 92 PartialEq, 93 Eq, 94 thiserror::Error, 95 miette::Diagnostic, 96 jacquard_derive::IntoStatic 97)] 98#[serde(tag = "error", content = "message")] 99#[serde(bound(deserialize = "'de: 'a"))] 100pub enum SearchPostsError<'a> { 101 #[serde(rename = "BadQueryString")] 102 BadQueryString(std::option::Option<String>), 103} 104 105impl std::fmt::Display for SearchPostsError<'_> { 106 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 107 match self { 108 Self::BadQueryString(msg) => { 109 write!(f, "BadQueryString")?; 110 if let Some(msg) = msg { 111 write!(f, ": {}", msg)?; 112 } 113 Ok(()) 114 } 115 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err), 116 } 117 } 118} 119 120///Response type for 121///app.bsky.feed.searchPosts 122pub struct SearchPostsResponse; 123impl jacquard_common::xrpc::XrpcResp for SearchPostsResponse { 124 const NSID: &'static str = "app.bsky.feed.searchPosts"; 125 const ENCODING: &'static str = "application/json"; 126 type Output<'de> = SearchPostsOutput<'de>; 127 type Err<'de> = SearchPostsError<'de>; 128} 129 130impl<'a> jacquard_common::xrpc::XrpcRequest for SearchPosts<'a> { 131 const NSID: &'static str = "app.bsky.feed.searchPosts"; 132 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query; 133 type Response = SearchPostsResponse; 134} 135 136///Endpoint type for 137///app.bsky.feed.searchPosts 138pub struct SearchPostsRequest; 139impl jacquard_common::xrpc::XrpcEndpoint for SearchPostsRequest { 140 const PATH: &'static str = "/xrpc/app.bsky.feed.searchPosts"; 141 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query; 142 type Request<'de> = SearchPosts<'de>; 143 type Response = SearchPostsResponse; 144}