forked from MightyPork/elefren-fork
30159 lines
1.7 MiB
Plaintext
30159 lines
1.7 MiB
Plaintext
#![feature(prelude_import)]
|
|
//! # Elefren: API Wrapper around the Mastodon API.
|
|
//!
|
|
//! Most of the api is documented on [Mastodon's website](https://docs.joinmastodon.org/client/intro/)
|
|
//!
|
|
//! ```no_run
|
|
//! # extern crate elefren;
|
|
//! # fn main() {
|
|
//! # run().unwrap();
|
|
//! # }
|
|
//! # fn run() -> elefren::Result<()> {
|
|
//! use elefren::{helpers::cli, prelude::*};
|
|
//!
|
|
//! let registration = Registration::new("https://mastodon.social")
|
|
//! .client_name("elefren_test")
|
|
//! .build()?;
|
|
//! let mastodon = cli::authenticate(registration)?;
|
|
//!
|
|
//! println!(
|
|
//! "{:?}",
|
|
//! mastodon
|
|
//! .get_home_timeline()?
|
|
//! .items_iter()
|
|
//! .take(100)
|
|
//! .collect::<Vec<_>>()
|
|
//! );
|
|
//! # Ok(())
|
|
//! # }
|
|
//! ```
|
|
//!
|
|
//! Elefren also supports Mastodon's Streaming API:
|
|
//!
|
|
//! # Example
|
|
//!
|
|
//! ```no_run
|
|
//! # extern crate elefren;
|
|
//! # use elefren::prelude::*;
|
|
//! # use std::error::Error;
|
|
//! use elefren::entities::event::Event;
|
|
//! # fn main() -> Result<(), Box<Error>> {
|
|
//! # let data = Data {
|
|
//! # base: "".into(),
|
|
//! # client_id: "".into(),
|
|
//! # client_secret: "".into(),
|
|
//! # redirect: "".into(),
|
|
//! # token: "".into(),
|
|
//! # };
|
|
//! let client = Mastodon::from(data);
|
|
//! for event in client.streaming_user()? {
|
|
//! match event {
|
|
//! Event::Update(ref status) => { /* .. */ },
|
|
//! Event::Notification(ref notification) => { /* .. */ },
|
|
//! Event::Delete(ref id) => { /* .. */ },
|
|
//! Event::FiltersChanged => { /* .. */ },
|
|
//! }
|
|
//! }
|
|
//! # Ok(())
|
|
//! # }
|
|
//! ```
|
|
|
|
#![deny(missing_docs, warnings, missing_debug_implementations,
|
|
missing_copy_implementations, trivial_casts, trivial_numeric_casts,
|
|
unsafe_code, unstable_features, unused_import_braces,
|
|
unused_qualifications)]
|
|
#![allow(intra_doc_link_resolution_failure)]
|
|
#[prelude_import]
|
|
use std::prelude::v1::*;
|
|
#[macro_use]
|
|
extern crate std;
|
|
|
|
#[macro_use]
|
|
extern crate log;
|
|
#[macro_use]
|
|
extern crate serde_derive;
|
|
#[macro_use]
|
|
extern crate doc_comment;
|
|
extern crate hyper_old_types;
|
|
extern crate isolang;
|
|
#[macro_use]
|
|
extern crate serde_json;
|
|
extern crate chrono;
|
|
extern crate reqwest;
|
|
extern crate serde;
|
|
extern crate serde_qs;
|
|
extern crate serde_urlencoded;
|
|
extern crate tap_reader;
|
|
extern crate try_from;
|
|
extern crate url;
|
|
extern crate tungstenite;
|
|
|
|
|
|
|
|
|
|
|
|
use std::{borrow::Cow,
|
|
/*
|
|
io::BufRead,
|
|
*/
|
|
ops};
|
|
|
|
use async_trait::async_trait;
|
|
use reqwest::{Client, RequestBuilder, Response};
|
|
use tap_reader::Tap;
|
|
/*
|
|
use tungstenite::client::AutoStream;
|
|
*/
|
|
|
|
use crate::entities::prelude::*;
|
|
use crate::page::Page;
|
|
|
|
pub use crate::data::Data;
|
|
pub use crate::errors::{ApiError, Error, Result};
|
|
pub use isolang::Language;
|
|
pub use crate::mastodon_client::{MastodonClient, MastodonUnauthenticated};
|
|
pub use crate::registration::Registration;
|
|
pub use crate::requests::{AddFilterRequest, AddPushRequest, StatusesRequest,
|
|
UpdateCredsRequest, UpdatePushRequest};
|
|
pub use crate::status_builder::{NewStatus, StatusBuilder};
|
|
|
|
/// Registering your App
|
|
pub mod apps {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
type Stream = EventReader<WebSocket>;
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
/// returns events that are relevant to the authorized user, i.e. home
|
|
/// timeline & notifications
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```no_run
|
|
/// # extern crate elefren;
|
|
/// # use elefren::prelude::*;
|
|
/// # use std::error::Error;
|
|
/// use elefren::entities::event::Event;
|
|
/// # fn main() -> Result<(), Box<Error>> {
|
|
/// # let data = Data {
|
|
/// # base: "".into(),
|
|
/// # client_id: "".into(),
|
|
/// # client_secret: "".into(),
|
|
/// # redirect: "".into(),
|
|
/// # token: "".into(),
|
|
/// # };
|
|
/// let client = Mastodon::from(data);
|
|
/// for event in client.streaming_user()? {
|
|
/// match event {
|
|
/// Event::Update(ref status) => { /* .. */ },
|
|
/// Event::Notification(ref notification) => { /* .. */ },
|
|
/// Event::Delete(ref id) => { /* .. */ },
|
|
/// Event::FiltersChanged => { /* .. */ },
|
|
/// }
|
|
/// }
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
fn streaming_user(&self) -> Result<Self::Stream> {
|
|
let mut url: url::Url = self.route("/api/v1/streaming").parse()?;
|
|
url.query_pairs_mut()
|
|
.append_pair("access_token", &self.token)
|
|
.append_pair("stream", "user");
|
|
let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?;
|
|
let new_scheme = match url.scheme() {
|
|
"http" => "ws",
|
|
"https" => "wss",
|
|
x => return Err(Error::Other(format!("Bad URL scheme: {}", x))),
|
|
};
|
|
url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?;
|
|
|
|
let client = tungstenite::connect(url.as_str())?.0;
|
|
|
|
Ok(EventReader(WebSocket(client)))
|
|
}
|
|
|
|
/// returns all public statuses
|
|
fn streaming_public(&self) -> Result<Self::Stream> {
|
|
let mut url: url::Url = self.route("/api/v1/streaming").parse()?;
|
|
url.query_pairs_mut()
|
|
.append_pair("access_token", &self.token)
|
|
.append_pair("stream", "public");
|
|
let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?;
|
|
let new_scheme = match url.scheme() {
|
|
"http" => "ws",
|
|
"https" => "wss",
|
|
x => return Err(Error::Other(format!("Bad URL scheme: {}", x))),
|
|
};
|
|
url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?;
|
|
|
|
let client = tungstenite::connect(url.as_str())?.0;
|
|
|
|
Ok(EventReader(WebSocket(client)))
|
|
}
|
|
|
|
/// Returns all local statuses
|
|
fn streaming_local(&self) -> Result<Self::Stream> {
|
|
let mut url: url::Url = self.route("/api/v1/streaming").parse()?;
|
|
url.query_pairs_mut()
|
|
.append_pair("access_token", &self.token)
|
|
.append_pair("stream", "public:local");
|
|
let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?;
|
|
let new_scheme = match url.scheme() {
|
|
"http" => "ws",
|
|
"https" => "wss",
|
|
x => return Err(Error::Other(format!("Bad URL scheme: {}", x))),
|
|
};
|
|
url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?;
|
|
|
|
let client = tungstenite::connect(url.as_str())?.0;
|
|
|
|
Ok(EventReader(WebSocket(client)))
|
|
}
|
|
|
|
/// Returns all public statuses for a particular hashtag
|
|
fn streaming_public_hashtag(&self, hashtag: &str) -> Result<Self::Stream> {
|
|
let mut url: url::Url = self.route("/api/v1/streaming").parse()?;
|
|
url.query_pairs_mut()
|
|
.append_pair("access_token", &self.token)
|
|
.append_pair("stream", "hashtag")
|
|
.append_pair("tag", hashtag);
|
|
let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?;
|
|
let new_scheme = match url.scheme() {
|
|
"http" => "ws",
|
|
"https" => "wss",
|
|
x => return Err(Error::Other(format!("Bad URL scheme: {}", x))),
|
|
};
|
|
url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?;
|
|
|
|
let client = tungstenite::connect(url.as_str())?.0;
|
|
|
|
Ok(EventReader(WebSocket(client)))
|
|
}
|
|
|
|
/// Returns all local statuses for a particular hashtag
|
|
fn streaming_local_hashtag(&self, hashtag: &str) -> Result<Self::Stream> {
|
|
let mut url: url::Url = self.route("/api/v1/streaming").parse()?;
|
|
url.query_pairs_mut()
|
|
.append_pair("access_token", &self.token)
|
|
.append_pair("stream", "hashtag:local")
|
|
.append_pair("tag", hashtag);
|
|
let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?;
|
|
let new_scheme = match url.scheme() {
|
|
"http" => "ws",
|
|
"https" => "wss",
|
|
x => return Err(Error::Other(format!("Bad URL scheme: {}", x))),
|
|
};
|
|
url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?;
|
|
|
|
let client = tungstenite::connect(url.as_str())?.0;
|
|
|
|
Ok(EventReader(WebSocket(client)))
|
|
}
|
|
|
|
/// Returns statuses for a list
|
|
fn streaming_list(&self, list_id: &str) -> Result<Self::Stream> {
|
|
let mut url: url::Url = self.route("/api/v1/streaming").parse()?;
|
|
url.query_pairs_mut()
|
|
.append_pair("access_token", &self.token)
|
|
.append_pair("stream", "list")
|
|
.append_pair("list", list_id);
|
|
let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?;
|
|
let new_scheme = match url.scheme() {
|
|
"http" => "ws",
|
|
"https" => "wss",
|
|
x => return Err(Error::Other(format!("Bad URL scheme: {}", x))),
|
|
};
|
|
url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?;
|
|
|
|
let client = tungstenite::connect(url.as_str())?.0;
|
|
|
|
Ok(EventReader(WebSocket(client)))
|
|
}
|
|
|
|
/// Returns all direct messages
|
|
fn streaming_direct(&self) -> Result<Self::Stream> {
|
|
let mut url: url::Url = self.route("/api/v1/streaming").parse()?;
|
|
url.query_pairs_mut()
|
|
.append_pair("access_token", &self.token)
|
|
.append_pair("stream", "direct");
|
|
let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?;
|
|
let new_scheme = match url.scheme() {
|
|
"http" => "ws",
|
|
"https" => "wss",
|
|
x => return Err(Error::Other(format!("Bad URL scheme: {}", x))),
|
|
};
|
|
url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?;
|
|
|
|
let client = tungstenite::connect(url.as_str())?.0;
|
|
|
|
Ok(EventReader(WebSocket(client)))
|
|
}
|
|
*/
|
|
|
|
/*
|
|
#[derive(Debug)]
|
|
/// WebSocket newtype so that EventStream can be implemented without coherency issues
|
|
pub struct WebSocket(tungstenite::protocol::WebSocket<AutoStream>);
|
|
|
|
/// A type that streaming events can be read from
|
|
pub trait EventStream {
|
|
/// Read a message from this stream
|
|
fn read_message(&mut self) -> Result<String>;
|
|
}
|
|
|
|
impl<R: BufRead> EventStream for R {
|
|
fn read_message(&mut self) -> Result<String> {
|
|
let mut buf = String::new();
|
|
self.read_line(&mut buf)?;
|
|
Ok(buf)
|
|
}
|
|
}
|
|
|
|
impl EventStream for WebSocket {
|
|
fn read_message(&mut self) -> Result<String> {
|
|
Ok(self.0.read_message()?.into_text()?)
|
|
}
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
/// Iterator that produces events from a mastodon streaming API event stream
|
|
pub struct EventReader<R: EventStream>(R);
|
|
impl<R: EventStream> Iterator for EventReader<R> {
|
|
type Item = Event;
|
|
|
|
fn next(&mut self) -> Option<Self::Item> {
|
|
let mut lines = Vec::new();
|
|
loop {
|
|
if let Ok(line) = self.0.read_message() {
|
|
let line = line.trim().to_string();
|
|
if line.starts_with(":") || line.is_empty() {
|
|
continue;
|
|
}
|
|
lines.push(line);
|
|
if let Ok(event) = self.make_event(&lines) {
|
|
lines.clear();
|
|
return Some(event);
|
|
} else {
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<R: EventStream> EventReader<R> {
|
|
fn make_event(&self, lines: &[String]) -> Result<Event> {
|
|
let event;
|
|
let data;
|
|
if let Some(event_line) = lines
|
|
.iter()
|
|
.find(|line| line.starts_with("event:"))
|
|
{
|
|
event = event_line[6..].trim().to_string();
|
|
data = lines.iter().find(|line| line.starts_with("data:")).map(|x| x[5..].trim().to_string());
|
|
} else {
|
|
#[derive(Deserialize)]
|
|
struct Message {
|
|
pub event: String,
|
|
pub payload: Option<String>,
|
|
}
|
|
let message = serde_json::from_str::<Message>(&lines[0])?;
|
|
event = message.event;
|
|
data = message.payload;
|
|
}
|
|
let event: &str = &event;
|
|
Ok(match event {
|
|
"notification" => {
|
|
let data = data.ok_or_else(|| {
|
|
Error::Other("Missing `data` line for notification".to_string())
|
|
})?;
|
|
let notification = serde_json::from_str::<Notification>(&data)?;
|
|
Event::Notification(notification)
|
|
},
|
|
"update" => {
|
|
let data =
|
|
data.ok_or_else(|| Error::Other("Missing `data` line for update".to_string()))?;
|
|
let status = serde_json::from_str::<Status>(&data)?;
|
|
Event::Update(status)
|
|
},
|
|
"delete" => {
|
|
let data =
|
|
data.ok_or_else(|| Error::Other("Missing `data` line for delete".to_string()))?;
|
|
Event::Delete(data)
|
|
},
|
|
"filters_changed" => Event::FiltersChanged,
|
|
_ => return Err(Error::Other(format!("Unknown event `{}`", event))),
|
|
})
|
|
}
|
|
}
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Convert the HTTP response body from JSON. Pass up deserialization errors
|
|
// transparently.
|
|
|
|
// If deserializing into the desired type fails try again to
|
|
// see if this is an error response.
|
|
use std::borrow::Cow;
|
|
use try_from::TryInto;
|
|
use crate::errors::{Error, Result};
|
|
use crate::scopes::Scopes;
|
|
/// Represents an application that can be registered with a mastodon instance
|
|
pub struct App {
|
|
client_name: String,
|
|
redirect_uris: String,
|
|
scopes: Scopes,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
website: Option<String>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for App {
|
|
#[inline]
|
|
fn clone(&self) -> App {
|
|
match *self {
|
|
App {
|
|
client_name: ref __self_0_0,
|
|
redirect_uris: ref __self_0_1,
|
|
scopes: ref __self_0_2,
|
|
website: ref __self_0_3 } =>
|
|
App{client_name: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
redirect_uris:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
scopes: ::core::clone::Clone::clone(&(*__self_0_2)),
|
|
website: ::core::clone::Clone::clone(&(*__self_0_3)),},
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for App {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match *self {
|
|
App {
|
|
client_name: ref __self_0_0,
|
|
redirect_uris: ref __self_0_1,
|
|
scopes: ref __self_0_2,
|
|
website: ref __self_0_3 } => {
|
|
let mut debug_trait_builder = f.debug_struct("App");
|
|
let _ =
|
|
debug_trait_builder.field("client_name",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("redirect_uris",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("scopes", &&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("website", &&(*__self_0_3));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for App {
|
|
#[inline]
|
|
fn default() -> App {
|
|
App{client_name: ::core::default::Default::default(),
|
|
redirect_uris: ::core::default::Default::default(),
|
|
scopes: ::core::default::Default::default(),
|
|
website: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_App: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for App {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"App",
|
|
false as
|
|
usize +
|
|
1 + 1 +
|
|
1 +
|
|
if Option::is_none(&self.website)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
}) {
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"client_name",
|
|
&self.client_name)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"redirect_uris",
|
|
&self.redirect_uris)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"scopes",
|
|
&self.scopes)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
if !Option::is_none(&self.website) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"website",
|
|
&self.website)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"website")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for App { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for App {
|
|
#[inline]
|
|
fn eq(&self, other: &App) -> bool {
|
|
match *other {
|
|
App {
|
|
client_name: ref __self_1_0,
|
|
redirect_uris: ref __self_1_1,
|
|
scopes: ref __self_1_2,
|
|
website: ref __self_1_3 } =>
|
|
match *self {
|
|
App {
|
|
client_name: ref __self_0_0,
|
|
redirect_uris: ref __self_0_1,
|
|
scopes: ref __self_0_2,
|
|
website: ref __self_0_3 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &App) -> bool {
|
|
match *other {
|
|
App {
|
|
client_name: ref __self_1_0,
|
|
redirect_uris: ref __self_1_1,
|
|
scopes: ref __self_1_2,
|
|
website: ref __self_1_3 } =>
|
|
match *self {
|
|
App {
|
|
client_name: ref __self_0_0,
|
|
redirect_uris: ref __self_0_1,
|
|
scopes: ref __self_0_2,
|
|
website: ref __self_0_3 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
impl App {
|
|
/// Get an AppBuilder object
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::apps::App;
|
|
///
|
|
/// let mut builder = App::builder();
|
|
/// ```
|
|
pub fn builder<'a>() -> AppBuilder<'a> { AppBuilder::new() }
|
|
/// Retrieve the list of scopes that apply to this App
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use elefren::Error;
|
|
/// use elefren::{apps::App, scopes::Scopes};
|
|
///
|
|
/// # fn main() -> Result<(), Error> {
|
|
/// let mut builder = App::builder();
|
|
/// builder.client_name("elefren-test");
|
|
/// let app = builder.build()?;
|
|
/// let scopes = app.scopes();
|
|
/// assert_eq!(scopes, &Scopes::read_all());
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn scopes(&self) -> &Scopes { &self.scopes }
|
|
}
|
|
/// Builder struct for defining your application.
|
|
/// ```
|
|
/// use elefren::apps::App;
|
|
/// use std::error::Error;
|
|
///
|
|
/// # fn main() -> Result<(), Box<Error>> {
|
|
/// let mut builder = App::builder();
|
|
/// builder.client_name("elefren_test");
|
|
/// let app = builder.build()?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub struct AppBuilder<'a> {
|
|
client_name: Option<Cow<'a, str>>,
|
|
redirect_uris: Option<Cow<'a, str>>,
|
|
scopes: Option<Scopes>,
|
|
website: Option<Cow<'a, str>>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl <'a> ::core::clone::Clone for AppBuilder<'a> {
|
|
#[inline]
|
|
fn clone(&self) -> AppBuilder<'a> {
|
|
match *self {
|
|
AppBuilder {
|
|
client_name: ref __self_0_0,
|
|
redirect_uris: ref __self_0_1,
|
|
scopes: ref __self_0_2,
|
|
website: ref __self_0_3 } =>
|
|
AppBuilder{client_name:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
redirect_uris:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
scopes:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
website:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),},
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl <'a> ::core::fmt::Debug for AppBuilder<'a> {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match *self {
|
|
AppBuilder {
|
|
client_name: ref __self_0_0,
|
|
redirect_uris: ref __self_0_1,
|
|
scopes: ref __self_0_2,
|
|
website: ref __self_0_3 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("AppBuilder");
|
|
let _ =
|
|
debug_trait_builder.field("client_name",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("redirect_uris",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("scopes", &&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("website", &&(*__self_0_3));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl <'a> ::core::default::Default for AppBuilder<'a> {
|
|
#[inline]
|
|
fn default() -> AppBuilder<'a> {
|
|
AppBuilder{client_name: ::core::default::Default::default(),
|
|
redirect_uris: ::core::default::Default::default(),
|
|
scopes: ::core::default::Default::default(),
|
|
website: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
impl <'a> ::core::marker::StructuralPartialEq for AppBuilder<'a> { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl <'a> ::core::cmp::PartialEq for AppBuilder<'a> {
|
|
#[inline]
|
|
fn eq(&self, other: &AppBuilder<'a>) -> bool {
|
|
match *other {
|
|
AppBuilder {
|
|
client_name: ref __self_1_0,
|
|
redirect_uris: ref __self_1_1,
|
|
scopes: ref __self_1_2,
|
|
website: ref __self_1_3 } =>
|
|
match *self {
|
|
AppBuilder {
|
|
client_name: ref __self_0_0,
|
|
redirect_uris: ref __self_0_1,
|
|
scopes: ref __self_0_2,
|
|
website: ref __self_0_3 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &AppBuilder<'a>) -> bool {
|
|
match *other {
|
|
AppBuilder {
|
|
client_name: ref __self_1_0,
|
|
redirect_uris: ref __self_1_1,
|
|
scopes: ref __self_1_2,
|
|
website: ref __self_1_3 } =>
|
|
match *self {
|
|
AppBuilder {
|
|
client_name: ref __self_0_0,
|
|
redirect_uris: ref __self_0_1,
|
|
scopes: ref __self_0_2,
|
|
website: ref __self_0_3 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_AppBuilder: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'a> _serde::Serialize for AppBuilder<'a> {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"AppBuilder",
|
|
false as
|
|
usize +
|
|
1 + 1 +
|
|
1 + 1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"client_name",
|
|
&self.client_name)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"redirect_uris",
|
|
&self.redirect_uris)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"scopes",
|
|
&self.scopes)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"website",
|
|
&self.website)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
impl <'a> AppBuilder<'a> {
|
|
/// Creates a new AppBuilder object
|
|
pub fn new() -> Self { Default::default() }
|
|
/// Name of the application. Will be displayed when the user is deciding to
|
|
/// grant permission.
|
|
///
|
|
/// In order to turn this builder into an App, this needs to be provided
|
|
pub fn client_name<I: Into<Cow<'a, str>>>(&mut self, name: I)
|
|
-> &mut Self {
|
|
self.client_name = Some(name.into());
|
|
self
|
|
}
|
|
/// Where the user should be redirected after authorization
|
|
///
|
|
/// If none is specified, the default is `urn:ietf:wg:oauth:2.0:oob`
|
|
pub fn redirect_uris<I: Into<Cow<'a, str>>>(&mut self, uris: I)
|
|
-> &mut Self {
|
|
self.redirect_uris = Some(uris.into());
|
|
self
|
|
}
|
|
/// Permission scope of the application.
|
|
///
|
|
/// IF none is specified, the default is Scopes::read_all()
|
|
pub fn scopes(&mut self, scopes: Scopes) -> &mut Self {
|
|
self.scopes = Some(scopes);
|
|
self
|
|
}
|
|
/// URL to the homepage of your application.
|
|
pub fn website<I: Into<Cow<'a, str>>>(&mut self, website: I)
|
|
-> &mut Self {
|
|
self.website = Some(website.into());
|
|
self
|
|
}
|
|
/// Attempts to convert this build into an `App`
|
|
///
|
|
/// Will fail if no `client_name` was provided
|
|
pub fn build(self) -> Result<App> {
|
|
Ok(App{client_name:
|
|
self.client_name.ok_or_else(||
|
|
Error::MissingField("client_name"))?.into(),
|
|
redirect_uris:
|
|
self.redirect_uris.unwrap_or_else(||
|
|
"urn:ietf:wg:oauth:2.0:oob".into()).into(),
|
|
scopes: self.scopes.unwrap_or_else(|| Scopes::read_all()),
|
|
website: self.website.map(|s| s.into()),})
|
|
}
|
|
}
|
|
impl TryInto<App> for App {
|
|
type Err = Error;
|
|
fn try_into(self) -> Result<App> { Ok(self) }
|
|
}
|
|
impl <'a> TryInto<App> for AppBuilder<'a> {
|
|
type Err = Error;
|
|
fn try_into(self) -> Result<App> { Ok(self.build()?) }
|
|
}
|
|
}
|
|
/// Contains the struct that holds the client auth data
|
|
pub mod data {
|
|
use std::borrow::Cow;
|
|
/// Raw data about mastodon app. Save `Data` using `serde` to prevent needing
|
|
/// to authenticate on every run.
|
|
pub struct Data {
|
|
/// Base url of instance eg. `https://mastodon.social`.
|
|
pub base: Cow<'static, str>,
|
|
/// The client's id given by the instance.
|
|
pub client_id: Cow<'static, str>,
|
|
/// The client's secret given by the instance.
|
|
pub client_secret: Cow<'static, str>,
|
|
/// Url to redirect back to your application from the instance signup.
|
|
pub redirect: Cow<'static, str>,
|
|
/// The client's access token.
|
|
pub token: Cow<'static, str>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Data {
|
|
#[inline]
|
|
fn clone(&self) -> Data {
|
|
match *self {
|
|
Data {
|
|
base: ref __self_0_0,
|
|
client_id: ref __self_0_1,
|
|
client_secret: ref __self_0_2,
|
|
redirect: ref __self_0_3,
|
|
token: ref __self_0_4 } =>
|
|
Data{base: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
client_id: ::core::clone::Clone::clone(&(*__self_0_1)),
|
|
client_secret:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
redirect: ::core::clone::Clone::clone(&(*__self_0_3)),
|
|
token: ::core::clone::Clone::clone(&(*__self_0_4)),},
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Data {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match *self {
|
|
Data {
|
|
base: ref __self_0_0,
|
|
client_id: ref __self_0_1,
|
|
client_secret: ref __self_0_2,
|
|
redirect: ref __self_0_3,
|
|
token: ref __self_0_4 } => {
|
|
let mut debug_trait_builder = f.debug_struct("Data");
|
|
let _ =
|
|
debug_trait_builder.field("base", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("client_id",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("client_secret",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("redirect",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("token", &&(*__self_0_4));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for Data { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Data {
|
|
#[inline]
|
|
fn eq(&self, other: &Data) -> bool {
|
|
match *other {
|
|
Data {
|
|
base: ref __self_1_0,
|
|
client_id: ref __self_1_1,
|
|
client_secret: ref __self_1_2,
|
|
redirect: ref __self_1_3,
|
|
token: ref __self_1_4 } =>
|
|
match *self {
|
|
Data {
|
|
base: ref __self_0_0,
|
|
client_id: ref __self_0_1,
|
|
client_secret: ref __self_0_2,
|
|
redirect: ref __self_0_3,
|
|
token: ref __self_0_4 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Data) -> bool {
|
|
match *other {
|
|
Data {
|
|
base: ref __self_1_0,
|
|
client_id: ref __self_1_1,
|
|
client_secret: ref __self_1_2,
|
|
redirect: ref __self_1_3,
|
|
token: ref __self_1_4 } =>
|
|
match *self {
|
|
Data {
|
|
base: ref __self_0_0,
|
|
client_id: ref __self_0_1,
|
|
client_secret: ref __self_0_2,
|
|
redirect: ref __self_0_3,
|
|
token: ref __self_0_4 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Data: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Data {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
__field4,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor {
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 => _serde::export::Ok(__Field::__field0),
|
|
1u64 => _serde::export::Ok(__Field::__field1),
|
|
2u64 => _serde::export::Ok(__Field::__field2),
|
|
3u64 => _serde::export::Ok(__Field::__field3),
|
|
4u64 => _serde::export::Ok(__Field::__field4),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 5")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"base" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"client_id" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"client_secret" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"redirect" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
"token" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
_ => { _serde::export::Ok(__Field::__ignore) }
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"base" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"client_id" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"client_secret" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"redirect" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
b"token" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
_ => { _serde::export::Ok(__Field::__ignore) }
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Data>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de> {
|
|
type Value = Data;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Data")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
-> _serde::export::Result<Self::Value, __A::Error>
|
|
where __A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<Cow<'static,
|
|
str>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) => __value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Data with 5 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<Cow<'static,
|
|
str>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) => __value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Data with 5 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<Cow<'static,
|
|
str>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) => __value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Data with 5 elements"));
|
|
}
|
|
};
|
|
let __field3 =
|
|
match match _serde::de::SeqAccess::next_element::<Cow<'static,
|
|
str>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) => __value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
|
|
&"struct Data with 5 elements"));
|
|
}
|
|
};
|
|
let __field4 =
|
|
match match _serde::de::SeqAccess::next_element::<Cow<'static,
|
|
str>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) => __value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
|
|
&"struct Data with 5 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Data{base: __field0,
|
|
client_id: __field1,
|
|
client_secret: __field2,
|
|
redirect: __field3,
|
|
token: __field4,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
-> _serde::export::Result<Self::Value, __A::Error>
|
|
where __A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<Cow<'static,
|
|
str>> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<Cow<'static,
|
|
str>> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<Cow<'static,
|
|
str>> =
|
|
_serde::export::None;
|
|
let mut __field3:
|
|
_serde::export::Option<Cow<'static,
|
|
str>> =
|
|
_serde::export::None;
|
|
let mut __field4:
|
|
_serde::export::Option<Cow<'static,
|
|
str>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("base"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Cow<'static,
|
|
str>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("client_id"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Cow<'static,
|
|
str>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("client_secret"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Cow<'static,
|
|
str>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field3 => {
|
|
if _serde::export::Option::is_some(&__field3)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("redirect"));
|
|
}
|
|
__field3 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Cow<'static,
|
|
str>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field4 => {
|
|
if _serde::export::Option::is_some(&__field4)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("token"));
|
|
}
|
|
__field4 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Cow<'static,
|
|
str>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) =>
|
|
{
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("base")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("client_id")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("client_secret")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field3 =
|
|
match __field3 {
|
|
_serde::export::Some(__field3) =>
|
|
__field3,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("redirect")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field4 =
|
|
match __field4 {
|
|
_serde::export::Some(__field4) =>
|
|
__field4,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("token")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Data{base: __field0,
|
|
client_id: __field1,
|
|
client_secret: __field2,
|
|
redirect: __field3,
|
|
token: __field4,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["base", "client_id", "client_secret", "redirect",
|
|
"token"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Data", FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Data>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Data: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for Data {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"Data",
|
|
false as
|
|
usize +
|
|
1 + 1 +
|
|
1 + 1 +
|
|
1) {
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"base",
|
|
&self.base)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"client_id",
|
|
&self.client_id)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"client_secret",
|
|
&self.client_secret)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"redirect",
|
|
&self.redirect)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"token",
|
|
&self.token)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
}
|
|
/// Entities returned from the API
|
|
pub mod entities {
|
|
/// Data structures for ser/de of account-related resources
|
|
pub mod account {
|
|
//! A module containing everything relating to a account returned from the api.
|
|
use chrono::prelude::*;
|
|
use serde::de::{self, Deserialize, Deserializer, Unexpected};
|
|
use crate::status_builder;
|
|
use std::path::PathBuf;
|
|
/// A struct representing an Account.
|
|
pub struct Account {
|
|
/// Equals `username` for local users, includes `@domain` for remote ones.
|
|
pub acct: String,
|
|
/// URL to the avatar image
|
|
pub avatar: String,
|
|
/// URL to the avatar static image (gif)
|
|
pub avatar_static: String,
|
|
/// The time the account was created.
|
|
pub created_at: DateTime<Utc>,
|
|
/// The account's display name.
|
|
pub display_name: String,
|
|
/// The number of followers for the account.
|
|
pub followers_count: u64,
|
|
/// The number of accounts the given account is following.
|
|
pub following_count: u64,
|
|
/// URL to the header image.
|
|
pub header: String,
|
|
/// URL to the header static image (gif).
|
|
pub header_static: String,
|
|
/// The ID of the account.
|
|
pub id: String,
|
|
/// Boolean for when the account cannot be followed without waiting for
|
|
/// approval first.
|
|
pub locked: bool,
|
|
/// Biography of user.
|
|
pub note: String,
|
|
/// The number of statuses the account has made.
|
|
pub statuses_count: u64,
|
|
/// URL of the user's profile page (can be remote).
|
|
pub url: String,
|
|
/// The username of the account.
|
|
pub username: String,
|
|
/// An extra attribute given from `verify_credentials` giving defaults about
|
|
/// a user
|
|
pub source: Option<Source>,
|
|
/// If the owner decided to switch accounts, new account is in
|
|
/// this attribute
|
|
pub moved: Option<Box<Account>>,
|
|
/// List of profile metadata fields
|
|
pub fields: Option<Vec<MetadataField>>,
|
|
/// Boolean indicating whether this account is a bot or not
|
|
pub bot: Option<bool>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Account {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Account {
|
|
acct: ref __self_0_0,
|
|
avatar: ref __self_0_1,
|
|
avatar_static: ref __self_0_2,
|
|
created_at: ref __self_0_3,
|
|
display_name: ref __self_0_4,
|
|
followers_count: ref __self_0_5,
|
|
following_count: ref __self_0_6,
|
|
header: ref __self_0_7,
|
|
header_static: ref __self_0_8,
|
|
id: ref __self_0_9,
|
|
locked: ref __self_0_10,
|
|
note: ref __self_0_11,
|
|
statuses_count: ref __self_0_12,
|
|
url: ref __self_0_13,
|
|
username: ref __self_0_14,
|
|
source: ref __self_0_15,
|
|
moved: ref __self_0_16,
|
|
fields: ref __self_0_17,
|
|
bot: ref __self_0_18 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Account");
|
|
let _ =
|
|
debug_trait_builder.field("acct",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("avatar",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("avatar_static",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("created_at",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("display_name",
|
|
&&(*__self_0_4));
|
|
let _ =
|
|
debug_trait_builder.field("followers_count",
|
|
&&(*__self_0_5));
|
|
let _ =
|
|
debug_trait_builder.field("following_count",
|
|
&&(*__self_0_6));
|
|
let _ =
|
|
debug_trait_builder.field("header",
|
|
&&(*__self_0_7));
|
|
let _ =
|
|
debug_trait_builder.field("header_static",
|
|
&&(*__self_0_8));
|
|
let _ =
|
|
debug_trait_builder.field("id", &&(*__self_0_9));
|
|
let _ =
|
|
debug_trait_builder.field("locked",
|
|
&&(*__self_0_10));
|
|
let _ =
|
|
debug_trait_builder.field("note",
|
|
&&(*__self_0_11));
|
|
let _ =
|
|
debug_trait_builder.field("statuses_count",
|
|
&&(*__self_0_12));
|
|
let _ =
|
|
debug_trait_builder.field("url",
|
|
&&(*__self_0_13));
|
|
let _ =
|
|
debug_trait_builder.field("username",
|
|
&&(*__self_0_14));
|
|
let _ =
|
|
debug_trait_builder.field("source",
|
|
&&(*__self_0_15));
|
|
let _ =
|
|
debug_trait_builder.field("moved",
|
|
&&(*__self_0_16));
|
|
let _ =
|
|
debug_trait_builder.field("fields",
|
|
&&(*__self_0_17));
|
|
let _ =
|
|
debug_trait_builder.field("bot",
|
|
&&(*__self_0_18));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Account {
|
|
#[inline]
|
|
fn clone(&self) -> Account {
|
|
match *self {
|
|
Account {
|
|
acct: ref __self_0_0,
|
|
avatar: ref __self_0_1,
|
|
avatar_static: ref __self_0_2,
|
|
created_at: ref __self_0_3,
|
|
display_name: ref __self_0_4,
|
|
followers_count: ref __self_0_5,
|
|
following_count: ref __self_0_6,
|
|
header: ref __self_0_7,
|
|
header_static: ref __self_0_8,
|
|
id: ref __self_0_9,
|
|
locked: ref __self_0_10,
|
|
note: ref __self_0_11,
|
|
statuses_count: ref __self_0_12,
|
|
url: ref __self_0_13,
|
|
username: ref __self_0_14,
|
|
source: ref __self_0_15,
|
|
moved: ref __self_0_16,
|
|
fields: ref __self_0_17,
|
|
bot: ref __self_0_18 } =>
|
|
Account{acct: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
avatar:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
avatar_static:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
created_at:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
display_name:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),
|
|
followers_count:
|
|
::core::clone::Clone::clone(&(*__self_0_5)),
|
|
following_count:
|
|
::core::clone::Clone::clone(&(*__self_0_6)),
|
|
header:
|
|
::core::clone::Clone::clone(&(*__self_0_7)),
|
|
header_static:
|
|
::core::clone::Clone::clone(&(*__self_0_8)),
|
|
id: ::core::clone::Clone::clone(&(*__self_0_9)),
|
|
locked:
|
|
::core::clone::Clone::clone(&(*__self_0_10)),
|
|
note:
|
|
::core::clone::Clone::clone(&(*__self_0_11)),
|
|
statuses_count:
|
|
::core::clone::Clone::clone(&(*__self_0_12)),
|
|
url: ::core::clone::Clone::clone(&(*__self_0_13)),
|
|
username:
|
|
::core::clone::Clone::clone(&(*__self_0_14)),
|
|
source:
|
|
::core::clone::Clone::clone(&(*__self_0_15)),
|
|
moved:
|
|
::core::clone::Clone::clone(&(*__self_0_16)),
|
|
fields:
|
|
::core::clone::Clone::clone(&(*__self_0_17)),
|
|
bot:
|
|
::core::clone::Clone::clone(&(*__self_0_18)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Account: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Account {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
__field4,
|
|
__field5,
|
|
__field6,
|
|
__field7,
|
|
__field8,
|
|
__field9,
|
|
__field10,
|
|
__field11,
|
|
__field12,
|
|
__field13,
|
|
__field14,
|
|
__field15,
|
|
__field16,
|
|
__field17,
|
|
__field18,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
4u64 =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
5u64 =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
6u64 =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
7u64 =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
8u64 =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
9u64 =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
10u64 =>
|
|
_serde::export::Ok(__Field::__field10),
|
|
11u64 =>
|
|
_serde::export::Ok(__Field::__field11),
|
|
12u64 =>
|
|
_serde::export::Ok(__Field::__field12),
|
|
13u64 =>
|
|
_serde::export::Ok(__Field::__field13),
|
|
14u64 =>
|
|
_serde::export::Ok(__Field::__field14),
|
|
15u64 =>
|
|
_serde::export::Ok(__Field::__field15),
|
|
16u64 =>
|
|
_serde::export::Ok(__Field::__field16),
|
|
17u64 =>
|
|
_serde::export::Ok(__Field::__field17),
|
|
18u64 =>
|
|
_serde::export::Ok(__Field::__field18),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 19")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"acct" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"avatar" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"avatar_static" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"created_at" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
"display_name" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
"followers_count" =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
"following_count" =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
"header" =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
"header_static" =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
"id" =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
"locked" =>
|
|
_serde::export::Ok(__Field::__field10),
|
|
"note" =>
|
|
_serde::export::Ok(__Field::__field11),
|
|
"statuses_count" =>
|
|
_serde::export::Ok(__Field::__field12),
|
|
"url" =>
|
|
_serde::export::Ok(__Field::__field13),
|
|
"username" =>
|
|
_serde::export::Ok(__Field::__field14),
|
|
"source" =>
|
|
_serde::export::Ok(__Field::__field15),
|
|
"moved" =>
|
|
_serde::export::Ok(__Field::__field16),
|
|
"fields" =>
|
|
_serde::export::Ok(__Field::__field17),
|
|
"bot" =>
|
|
_serde::export::Ok(__Field::__field18),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"acct" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"avatar" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"avatar_static" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"created_at" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
b"display_name" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
b"followers_count" =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
b"following_count" =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
b"header" =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
b"header_static" =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
b"id" =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
b"locked" =>
|
|
_serde::export::Ok(__Field::__field10),
|
|
b"note" =>
|
|
_serde::export::Ok(__Field::__field11),
|
|
b"statuses_count" =>
|
|
_serde::export::Ok(__Field::__field12),
|
|
b"url" =>
|
|
_serde::export::Ok(__Field::__field13),
|
|
b"username" =>
|
|
_serde::export::Ok(__Field::__field14),
|
|
b"source" =>
|
|
_serde::export::Ok(__Field::__field15),
|
|
b"moved" =>
|
|
_serde::export::Ok(__Field::__field16),
|
|
b"fields" =>
|
|
_serde::export::Ok(__Field::__field17),
|
|
b"bot" =>
|
|
_serde::export::Ok(__Field::__field18),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Account>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Account;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Account")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field3 =
|
|
match match _serde::de::SeqAccess::next_element::<DateTime<Utc>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field4 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field5 =
|
|
match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(5usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field6 =
|
|
match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(6usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field7 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(7usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field8 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(8usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field9 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(9usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field10 =
|
|
match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(10usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field11 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(11usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field12 =
|
|
match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(12usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field13 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(13usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field14 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(14usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field15 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<Source>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(15usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field16 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<Box<Account>>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(16usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field17 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<Vec<MetadataField>>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(17usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
let __field18 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(18usize,
|
|
&"struct Account with 19 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Account{acct: __field0,
|
|
avatar: __field1,
|
|
avatar_static:
|
|
__field2,
|
|
created_at:
|
|
__field3,
|
|
display_name:
|
|
__field4,
|
|
followers_count:
|
|
__field5,
|
|
following_count:
|
|
__field6,
|
|
header: __field7,
|
|
header_static:
|
|
__field8,
|
|
id: __field9,
|
|
locked: __field10,
|
|
note: __field11,
|
|
statuses_count:
|
|
__field12,
|
|
url: __field13,
|
|
username:
|
|
__field14,
|
|
source: __field15,
|
|
moved: __field16,
|
|
fields: __field17,
|
|
bot: __field18,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field3:
|
|
_serde::export::Option<DateTime<Utc>> =
|
|
_serde::export::None;
|
|
let mut __field4:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field5:
|
|
_serde::export::Option<u64> =
|
|
_serde::export::None;
|
|
let mut __field6:
|
|
_serde::export::Option<u64> =
|
|
_serde::export::None;
|
|
let mut __field7:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field8:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field9:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field10:
|
|
_serde::export::Option<bool> =
|
|
_serde::export::None;
|
|
let mut __field11:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field12:
|
|
_serde::export::Option<u64> =
|
|
_serde::export::None;
|
|
let mut __field13:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field14:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field15:
|
|
_serde::export::Option<Option<Source>> =
|
|
_serde::export::None;
|
|
let mut __field16:
|
|
_serde::export::Option<Option<Box<Account>>> =
|
|
_serde::export::None;
|
|
let mut __field17:
|
|
_serde::export::Option<Option<Vec<MetadataField>>> =
|
|
_serde::export::None;
|
|
let mut __field18:
|
|
_serde::export::Option<Option<bool>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("acct"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("avatar"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("avatar_static"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field3 => {
|
|
if _serde::export::Option::is_some(&__field3)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("created_at"));
|
|
}
|
|
__field3 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<DateTime<Utc>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field4 => {
|
|
if _serde::export::Option::is_some(&__field4)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("display_name"));
|
|
}
|
|
__field4 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field5 => {
|
|
if _serde::export::Option::is_some(&__field5)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("followers_count"));
|
|
}
|
|
__field5 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field6 => {
|
|
if _serde::export::Option::is_some(&__field6)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("following_count"));
|
|
}
|
|
__field6 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field7 => {
|
|
if _serde::export::Option::is_some(&__field7)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("header"));
|
|
}
|
|
__field7 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field8 => {
|
|
if _serde::export::Option::is_some(&__field8)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("header_static"));
|
|
}
|
|
__field8 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field9 => {
|
|
if _serde::export::Option::is_some(&__field9)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("id"));
|
|
}
|
|
__field9 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field10 => {
|
|
if _serde::export::Option::is_some(&__field10)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("locked"));
|
|
}
|
|
__field10 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field11 => {
|
|
if _serde::export::Option::is_some(&__field11)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("note"));
|
|
}
|
|
__field11 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field12 => {
|
|
if _serde::export::Option::is_some(&__field12)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("statuses_count"));
|
|
}
|
|
__field12 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field13 => {
|
|
if _serde::export::Option::is_some(&__field13)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("url"));
|
|
}
|
|
__field13 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field14 => {
|
|
if _serde::export::Option::is_some(&__field14)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("username"));
|
|
}
|
|
__field14 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field15 => {
|
|
if _serde::export::Option::is_some(&__field15)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("source"));
|
|
}
|
|
__field15 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Source>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field16 => {
|
|
if _serde::export::Option::is_some(&__field16)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("moved"));
|
|
}
|
|
__field16 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Box<Account>>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field17 => {
|
|
if _serde::export::Option::is_some(&__field17)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("fields"));
|
|
}
|
|
__field17 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Vec<MetadataField>>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field18 => {
|
|
if _serde::export::Option::is_some(&__field18)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("bot"));
|
|
}
|
|
__field18 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("acct")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("avatar")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("avatar_static")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field3 =
|
|
match __field3 {
|
|
_serde::export::Some(__field3) =>
|
|
__field3,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("created_at")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field4 =
|
|
match __field4 {
|
|
_serde::export::Some(__field4) =>
|
|
__field4,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("display_name")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field5 =
|
|
match __field5 {
|
|
_serde::export::Some(__field5) =>
|
|
__field5,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("followers_count")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field6 =
|
|
match __field6 {
|
|
_serde::export::Some(__field6) =>
|
|
__field6,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("following_count")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field7 =
|
|
match __field7 {
|
|
_serde::export::Some(__field7) =>
|
|
__field7,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("header")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field8 =
|
|
match __field8 {
|
|
_serde::export::Some(__field8) =>
|
|
__field8,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("header_static")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field9 =
|
|
match __field9 {
|
|
_serde::export::Some(__field9) =>
|
|
__field9,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("id")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field10 =
|
|
match __field10 {
|
|
_serde::export::Some(__field10) =>
|
|
__field10,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("locked")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field11 =
|
|
match __field11 {
|
|
_serde::export::Some(__field11) =>
|
|
__field11,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("note")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field12 =
|
|
match __field12 {
|
|
_serde::export::Some(__field12) =>
|
|
__field12,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("statuses_count")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field13 =
|
|
match __field13 {
|
|
_serde::export::Some(__field13) =>
|
|
__field13,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("url")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field14 =
|
|
match __field14 {
|
|
_serde::export::Some(__field14) =>
|
|
__field14,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("username")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field15 =
|
|
match __field15 {
|
|
_serde::export::Some(__field15) =>
|
|
__field15,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("source")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field16 =
|
|
match __field16 {
|
|
_serde::export::Some(__field16) =>
|
|
__field16,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("moved")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field17 =
|
|
match __field17 {
|
|
_serde::export::Some(__field17) =>
|
|
__field17,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("fields")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field18 =
|
|
match __field18 {
|
|
_serde::export::Some(__field18) =>
|
|
__field18,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("bot")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Account{acct: __field0,
|
|
avatar: __field1,
|
|
avatar_static:
|
|
__field2,
|
|
created_at:
|
|
__field3,
|
|
display_name:
|
|
__field4,
|
|
followers_count:
|
|
__field5,
|
|
following_count:
|
|
__field6,
|
|
header: __field7,
|
|
header_static:
|
|
__field8,
|
|
id: __field9,
|
|
locked: __field10,
|
|
note: __field11,
|
|
statuses_count:
|
|
__field12,
|
|
url: __field13,
|
|
username:
|
|
__field14,
|
|
source: __field15,
|
|
moved: __field16,
|
|
fields: __field17,
|
|
bot: __field18,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["acct", "avatar", "avatar_static", "created_at",
|
|
"display_name", "followers_count",
|
|
"following_count", "header", "header_static",
|
|
"id", "locked", "note", "statuses_count", "url",
|
|
"username", "source", "moved", "fields", "bot"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Account",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Account>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Account { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Account {
|
|
#[inline]
|
|
fn eq(&self, other: &Account) -> bool {
|
|
match *other {
|
|
Account {
|
|
acct: ref __self_1_0,
|
|
avatar: ref __self_1_1,
|
|
avatar_static: ref __self_1_2,
|
|
created_at: ref __self_1_3,
|
|
display_name: ref __self_1_4,
|
|
followers_count: ref __self_1_5,
|
|
following_count: ref __self_1_6,
|
|
header: ref __self_1_7,
|
|
header_static: ref __self_1_8,
|
|
id: ref __self_1_9,
|
|
locked: ref __self_1_10,
|
|
note: ref __self_1_11,
|
|
statuses_count: ref __self_1_12,
|
|
url: ref __self_1_13,
|
|
username: ref __self_1_14,
|
|
source: ref __self_1_15,
|
|
moved: ref __self_1_16,
|
|
fields: ref __self_1_17,
|
|
bot: ref __self_1_18 } =>
|
|
match *self {
|
|
Account {
|
|
acct: ref __self_0_0,
|
|
avatar: ref __self_0_1,
|
|
avatar_static: ref __self_0_2,
|
|
created_at: ref __self_0_3,
|
|
display_name: ref __self_0_4,
|
|
followers_count: ref __self_0_5,
|
|
following_count: ref __self_0_6,
|
|
header: ref __self_0_7,
|
|
header_static: ref __self_0_8,
|
|
id: ref __self_0_9,
|
|
locked: ref __self_0_10,
|
|
note: ref __self_0_11,
|
|
statuses_count: ref __self_0_12,
|
|
url: ref __self_0_13,
|
|
username: ref __self_0_14,
|
|
source: ref __self_0_15,
|
|
moved: ref __self_0_16,
|
|
fields: ref __self_0_17,
|
|
bot: ref __self_0_18 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4) &&
|
|
(*__self_0_5) == (*__self_1_5) &&
|
|
(*__self_0_6) == (*__self_1_6) &&
|
|
(*__self_0_7) == (*__self_1_7) &&
|
|
(*__self_0_8) == (*__self_1_8) &&
|
|
(*__self_0_9) == (*__self_1_9) &&
|
|
(*__self_0_10) == (*__self_1_10) &&
|
|
(*__self_0_11) == (*__self_1_11) &&
|
|
(*__self_0_12) == (*__self_1_12) &&
|
|
(*__self_0_13) == (*__self_1_13) &&
|
|
(*__self_0_14) == (*__self_1_14) &&
|
|
(*__self_0_15) == (*__self_1_15) &&
|
|
(*__self_0_16) == (*__self_1_16) &&
|
|
(*__self_0_17) == (*__self_1_17) &&
|
|
(*__self_0_18) == (*__self_1_18),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Account) -> bool {
|
|
match *other {
|
|
Account {
|
|
acct: ref __self_1_0,
|
|
avatar: ref __self_1_1,
|
|
avatar_static: ref __self_1_2,
|
|
created_at: ref __self_1_3,
|
|
display_name: ref __self_1_4,
|
|
followers_count: ref __self_1_5,
|
|
following_count: ref __self_1_6,
|
|
header: ref __self_1_7,
|
|
header_static: ref __self_1_8,
|
|
id: ref __self_1_9,
|
|
locked: ref __self_1_10,
|
|
note: ref __self_1_11,
|
|
statuses_count: ref __self_1_12,
|
|
url: ref __self_1_13,
|
|
username: ref __self_1_14,
|
|
source: ref __self_1_15,
|
|
moved: ref __self_1_16,
|
|
fields: ref __self_1_17,
|
|
bot: ref __self_1_18 } =>
|
|
match *self {
|
|
Account {
|
|
acct: ref __self_0_0,
|
|
avatar: ref __self_0_1,
|
|
avatar_static: ref __self_0_2,
|
|
created_at: ref __self_0_3,
|
|
display_name: ref __self_0_4,
|
|
followers_count: ref __self_0_5,
|
|
following_count: ref __self_0_6,
|
|
header: ref __self_0_7,
|
|
header_static: ref __self_0_8,
|
|
id: ref __self_0_9,
|
|
locked: ref __self_0_10,
|
|
note: ref __self_0_11,
|
|
statuses_count: ref __self_0_12,
|
|
url: ref __self_0_13,
|
|
username: ref __self_0_14,
|
|
source: ref __self_0_15,
|
|
moved: ref __self_0_16,
|
|
fields: ref __self_0_17,
|
|
bot: ref __self_0_18 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4) ||
|
|
(*__self_0_5) != (*__self_1_5) ||
|
|
(*__self_0_6) != (*__self_1_6) ||
|
|
(*__self_0_7) != (*__self_1_7) ||
|
|
(*__self_0_8) != (*__self_1_8) ||
|
|
(*__self_0_9) != (*__self_1_9) ||
|
|
(*__self_0_10) != (*__self_1_10) ||
|
|
(*__self_0_11) != (*__self_1_11) ||
|
|
(*__self_0_12) != (*__self_1_12) ||
|
|
(*__self_0_13) != (*__self_1_13) ||
|
|
(*__self_0_14) != (*__self_1_14) ||
|
|
(*__self_0_15) != (*__self_1_15) ||
|
|
(*__self_0_16) != (*__self_1_16) ||
|
|
(*__self_0_17) != (*__self_1_17) ||
|
|
(*__self_0_18) != (*__self_1_18),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
/// A single name: value pair from a user's profile
|
|
pub struct MetadataField {
|
|
/// name part of metadata
|
|
pub name: String,
|
|
/// value part of metadata
|
|
pub value: String,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for MetadataField {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
MetadataField {
|
|
name: ref __self_0_0, value: ref __self_0_1 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("MetadataField");
|
|
let _ =
|
|
debug_trait_builder.field("name",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("value",
|
|
&&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for MetadataField {
|
|
#[inline]
|
|
fn clone(&self) -> MetadataField {
|
|
match *self {
|
|
MetadataField {
|
|
name: ref __self_0_0, value: ref __self_0_1 } =>
|
|
MetadataField{name:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
value:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_MetadataField: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for MetadataField {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"MetadataField",
|
|
false
|
|
as
|
|
usize
|
|
+ 1
|
|
+
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"name",
|
|
&self.name)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"value",
|
|
&self.value)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_MetadataField: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for MetadataField {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field { __field0, __field1, __ignore, }
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 2")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"name" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"value" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"name" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"value" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<MetadataField>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = MetadataField;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct MetadataField")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct MetadataField with 2 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct MetadataField with 2 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(MetadataField{name:
|
|
__field0,
|
|
value:
|
|
__field1,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("name"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("value"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("name")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("value")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(MetadataField{name:
|
|
__field0,
|
|
value:
|
|
__field1,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["name", "value"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"MetadataField",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<MetadataField>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for MetadataField { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for MetadataField {
|
|
#[inline]
|
|
fn eq(&self, other: &MetadataField) -> bool {
|
|
match *other {
|
|
MetadataField {
|
|
name: ref __self_1_0, value: ref __self_1_1 } =>
|
|
match *self {
|
|
MetadataField {
|
|
name: ref __self_0_0, value: ref __self_0_1 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &MetadataField) -> bool {
|
|
match *other {
|
|
MetadataField {
|
|
name: ref __self_1_0, value: ref __self_1_1 } =>
|
|
match *self {
|
|
MetadataField {
|
|
name: ref __self_0_0, value: ref __self_0_1 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for MetadataField {
|
|
#[inline]
|
|
fn default() -> MetadataField {
|
|
MetadataField{name: ::core::default::Default::default(),
|
|
value: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
impl MetadataField {
|
|
pub(crate) fn new(name: &str, value: &str) -> MetadataField {
|
|
MetadataField{name: name.into(), value: value.into(),}
|
|
}
|
|
}
|
|
/// An extra object given from `verify_credentials` giving defaults about a user
|
|
pub struct Source {
|
|
privacy: Option<status_builder::Visibility>,
|
|
#[serde(deserialize_with = "string_or_bool")]
|
|
sensitive: bool,
|
|
note: Option<String>,
|
|
fields: Option<Vec<MetadataField>>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Source {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Source {
|
|
privacy: ref __self_0_0,
|
|
sensitive: ref __self_0_1,
|
|
note: ref __self_0_2,
|
|
fields: ref __self_0_3 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Source");
|
|
let _ =
|
|
debug_trait_builder.field("privacy",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("sensitive",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("note",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("fields",
|
|
&&(*__self_0_3));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Source {
|
|
#[inline]
|
|
fn clone(&self) -> Source {
|
|
match *self {
|
|
Source {
|
|
privacy: ref __self_0_0,
|
|
sensitive: ref __self_0_1,
|
|
note: ref __self_0_2,
|
|
fields: ref __self_0_3 } =>
|
|
Source{privacy:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
sensitive:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
note: ::core::clone::Clone::clone(&(*__self_0_2)),
|
|
fields:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Source: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Source {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 4")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"privacy" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"sensitive" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"note" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"fields" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"privacy" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"sensitive" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"note" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"fields" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Source>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Source;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Source")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<status_builder::Visibility>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Source with 4 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match {
|
|
struct __DeserializeWith<'de> {
|
|
value: bool,
|
|
phantom: _serde::export::PhantomData<Source>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de>
|
|
_serde::Deserialize<'de> for
|
|
__DeserializeWith<'de> {
|
|
fn deserialize<__D>(__deserializer:
|
|
__D)
|
|
->
|
|
_serde::export::Result<Self,
|
|
__D::Error>
|
|
where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::export::Ok(__DeserializeWith{value:
|
|
match string_or_bool(__deserializer)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=>
|
|
{
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
phantom:
|
|
_serde::export::PhantomData,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
_serde::export::Option::map(match _serde::de::SeqAccess::next_element::<__DeserializeWith<'de>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=>
|
|
{
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
|__wrap|
|
|
__wrap.value)
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Source with 4 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Source with 4 elements"));
|
|
}
|
|
};
|
|
let __field3 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<Vec<MetadataField>>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
|
|
&"struct Source with 4 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Source{privacy: __field0,
|
|
sensitive: __field1,
|
|
note: __field2,
|
|
fields: __field3,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<Option<status_builder::Visibility>> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<bool> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field3:
|
|
_serde::export::Option<Option<Vec<MetadataField>>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("privacy"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<status_builder::Visibility>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("sensitive"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some({
|
|
struct __DeserializeWith<'de> {
|
|
value: bool,
|
|
phantom: _serde::export::PhantomData<Source>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de>
|
|
_serde::Deserialize<'de>
|
|
for
|
|
__DeserializeWith<'de>
|
|
{
|
|
fn deserialize<__D>(__deserializer:
|
|
__D)
|
|
->
|
|
_serde::export::Result<Self,
|
|
__D::Error>
|
|
where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::export::Ok(__DeserializeWith{value:
|
|
match string_or_bool(__deserializer)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=>
|
|
{
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
phantom:
|
|
_serde::export::PhantomData,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
match _serde::de::MapAccess::next_value::<__DeserializeWith<'de>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__wrapper)
|
|
=>
|
|
__wrapper.value,
|
|
_serde::export::Err(__err)
|
|
=>
|
|
{
|
|
return _serde::export::Err(__err);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("note"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field3 => {
|
|
if _serde::export::Option::is_some(&__field3)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("fields"));
|
|
}
|
|
__field3 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Vec<MetadataField>>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("privacy")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::missing_field("sensitive")),
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("note")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field3 =
|
|
match __field3 {
|
|
_serde::export::Some(__field3) =>
|
|
__field3,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("fields")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Source{privacy: __field0,
|
|
sensitive: __field1,
|
|
note: __field2,
|
|
fields: __field3,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["privacy", "sensitive", "note", "fields"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Source",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Source>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Source { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Source {
|
|
#[inline]
|
|
fn eq(&self, other: &Source) -> bool {
|
|
match *other {
|
|
Source {
|
|
privacy: ref __self_1_0,
|
|
sensitive: ref __self_1_1,
|
|
note: ref __self_1_2,
|
|
fields: ref __self_1_3 } =>
|
|
match *self {
|
|
Source {
|
|
privacy: ref __self_0_0,
|
|
sensitive: ref __self_0_1,
|
|
note: ref __self_0_2,
|
|
fields: ref __self_0_3 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Source) -> bool {
|
|
match *other {
|
|
Source {
|
|
privacy: ref __self_1_0,
|
|
sensitive: ref __self_1_1,
|
|
note: ref __self_1_2,
|
|
fields: ref __self_1_3 } =>
|
|
match *self {
|
|
Source {
|
|
privacy: ref __self_0_0,
|
|
sensitive: ref __self_0_1,
|
|
note: ref __self_0_2,
|
|
fields: ref __self_0_3 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
fn string_or_bool<'de, D: Deserializer<'de>>(val: D)
|
|
-> ::std::result::Result<bool, D::Error> {
|
|
#[serde(untagged)]
|
|
pub enum BoolOrString { Bool(bool), Str(String), }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for BoolOrString {
|
|
#[inline]
|
|
fn clone(&self) -> BoolOrString {
|
|
match (&*self,) {
|
|
(&BoolOrString::Bool(ref __self_0),) =>
|
|
BoolOrString::Bool(::core::clone::Clone::clone(&(*__self_0))),
|
|
(&BoolOrString::Str(ref __self_0),) =>
|
|
BoolOrString::Str(::core::clone::Clone::clone(&(*__self_0))),
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for BoolOrString {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match (&*self,) {
|
|
(&BoolOrString::Bool(ref __self_0),) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("Bool");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&BoolOrString::Str(ref __self_0),) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("Str");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_BoolOrString: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde
|
|
:: export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for BoolOrString {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
let __content =
|
|
match <_serde::private::de::Content as
|
|
_serde::Deserialize>::deserialize(__deserializer)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
if let _serde::export::Ok(__ok) =
|
|
_serde::export::Result::map(<bool as
|
|
_serde::Deserialize>::deserialize(_serde::private::de::ContentRefDeserializer::<__D::Error>::new(&__content)),
|
|
BoolOrString::Bool)
|
|
{
|
|
return _serde::export::Ok(__ok);
|
|
}
|
|
if let _serde::export::Ok(__ok) =
|
|
_serde::export::Result::map(<String as
|
|
_serde::Deserialize>::deserialize(_serde::private::de::ContentRefDeserializer::<__D::Error>::new(&__content)),
|
|
BoolOrString::Str)
|
|
{
|
|
return _serde::export::Ok(__ok);
|
|
}
|
|
_serde::export::Err(_serde::de::Error::custom("data did not match any variant of untagged enum BoolOrString"))
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for BoolOrString { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for BoolOrString {
|
|
#[inline]
|
|
fn eq(&self, other: &BoolOrString) -> bool {
|
|
{
|
|
let __self_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*self)
|
|
};
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) {
|
|
(&BoolOrString::Bool(ref __self_0),
|
|
&BoolOrString::Bool(ref __arg_1_0)) =>
|
|
(*__self_0) == (*__arg_1_0),
|
|
(&BoolOrString::Str(ref __self_0),
|
|
&BoolOrString::Str(ref __arg_1_0)) =>
|
|
(*__self_0) == (*__arg_1_0),
|
|
_ => unsafe {
|
|
::core::intrinsics::unreachable()
|
|
}
|
|
}
|
|
} else { false }
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &BoolOrString) -> bool {
|
|
{
|
|
let __self_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*self)
|
|
};
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) {
|
|
(&BoolOrString::Bool(ref __self_0),
|
|
&BoolOrString::Bool(ref __arg_1_0)) =>
|
|
(*__self_0) != (*__arg_1_0),
|
|
(&BoolOrString::Str(ref __self_0),
|
|
&BoolOrString::Str(ref __arg_1_0)) =>
|
|
(*__self_0) != (*__arg_1_0),
|
|
_ => unsafe {
|
|
::core::intrinsics::unreachable()
|
|
}
|
|
}
|
|
} else { true }
|
|
}
|
|
}
|
|
}
|
|
Ok(match BoolOrString::deserialize(val)? {
|
|
BoolOrString::Bool(b) => b,
|
|
BoolOrString::Str(ref s) => {
|
|
if s == "true" {
|
|
true
|
|
} else if s == "false" {
|
|
false
|
|
} else {
|
|
return Err(de::Error::invalid_value(Unexpected::Str(s),
|
|
&"true or false"));
|
|
}
|
|
}
|
|
})
|
|
}
|
|
pub(crate) struct UpdateSource {
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
pub(crate) privacy: Option<status_builder::Visibility>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
pub(crate) sensitive: Option<bool>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for UpdateSource {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
UpdateSource {
|
|
privacy: ref __self_0_0, sensitive: ref __self_0_1 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("UpdateSource");
|
|
let _ =
|
|
debug_trait_builder.field("privacy",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("sensitive",
|
|
&&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for UpdateSource {
|
|
#[inline]
|
|
fn default() -> UpdateSource {
|
|
UpdateSource{privacy: ::core::default::Default::default(),
|
|
sensitive: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for UpdateSource {
|
|
#[inline]
|
|
fn clone(&self) -> UpdateSource {
|
|
match *self {
|
|
UpdateSource {
|
|
privacy: ref __self_0_0, sensitive: ref __self_0_1 } =>
|
|
UpdateSource{privacy:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
sensitive:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_UpdateSource: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for UpdateSource {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"UpdateSource",
|
|
false
|
|
as
|
|
usize
|
|
+
|
|
if Option::is_none(&self.privacy)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.sensitive)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
})
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
if !Option::is_none(&self.privacy) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"privacy",
|
|
&self.privacy)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"privacy")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.sensitive) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"sensitive",
|
|
&self.sensitive)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"sensitive")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for UpdateSource { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for UpdateSource {
|
|
#[inline]
|
|
fn eq(&self, other: &UpdateSource) -> bool {
|
|
match *other {
|
|
UpdateSource {
|
|
privacy: ref __self_1_0, sensitive: ref __self_1_1 } =>
|
|
match *self {
|
|
UpdateSource {
|
|
privacy: ref __self_0_0, sensitive: ref __self_0_1 }
|
|
=>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &UpdateSource) -> bool {
|
|
match *other {
|
|
UpdateSource {
|
|
privacy: ref __self_1_0, sensitive: ref __self_1_1 } =>
|
|
match *self {
|
|
UpdateSource {
|
|
privacy: ref __self_0_0, sensitive: ref __self_0_1 }
|
|
=>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
pub(crate) struct Credentials {
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
pub(crate) display_name: Option<String>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
pub(crate) note: Option<String>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
pub(crate) avatar: Option<PathBuf>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
pub(crate) header: Option<PathBuf>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
pub(crate) source: Option<UpdateSource>,
|
|
#[serde(serialize_with = "fields_attributes_ser::ser")]
|
|
pub(crate) fields_attributes: Vec<MetadataField>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Credentials {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Credentials {
|
|
display_name: ref __self_0_0,
|
|
note: ref __self_0_1,
|
|
avatar: ref __self_0_2,
|
|
header: ref __self_0_3,
|
|
source: ref __self_0_4,
|
|
fields_attributes: ref __self_0_5 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Credentials");
|
|
let _ =
|
|
debug_trait_builder.field("display_name",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("note",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("avatar",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("header",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("source",
|
|
&&(*__self_0_4));
|
|
let _ =
|
|
debug_trait_builder.field("fields_attributes",
|
|
&&(*__self_0_5));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for Credentials {
|
|
#[inline]
|
|
fn default() -> Credentials {
|
|
Credentials{display_name: ::core::default::Default::default(),
|
|
note: ::core::default::Default::default(),
|
|
avatar: ::core::default::Default::default(),
|
|
header: ::core::default::Default::default(),
|
|
source: ::core::default::Default::default(),
|
|
fields_attributes:
|
|
::core::default::Default::default(),}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Credentials: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for Credentials {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"Credentials",
|
|
false
|
|
as
|
|
usize
|
|
+
|
|
if Option::is_none(&self.display_name)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.note)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.avatar)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.header)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.source)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
if !Option::is_none(&self.display_name) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"display_name",
|
|
&self.display_name)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"display_name")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.note) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"note",
|
|
&self.note)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"note")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.avatar) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"avatar",
|
|
&self.avatar)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"avatar")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.header) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"header",
|
|
&self.header)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"header")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.source) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"source",
|
|
&self.source)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"source")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"fields_attributes",
|
|
{
|
|
struct __SerializeWith<'__a> {
|
|
values: (&'__a Vec<MetadataField>,),
|
|
phantom: _serde::export::PhantomData<Credentials>,
|
|
}
|
|
impl <'__a>
|
|
_serde::Serialize
|
|
for
|
|
__SerializeWith<'__a>
|
|
{
|
|
fn serialize<__S>(&self,
|
|
__s:
|
|
__S)
|
|
->
|
|
_serde::export::Result<__S::Ok,
|
|
__S::Error>
|
|
where
|
|
__S: _serde::Serializer {
|
|
fields_attributes_ser::ser(self.values.0,
|
|
__s)
|
|
}
|
|
}
|
|
&__SerializeWith{values:
|
|
(&self.fields_attributes,),
|
|
phantom:
|
|
_serde::export::PhantomData::<Credentials>,}
|
|
})
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Credentials { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Credentials {
|
|
#[inline]
|
|
fn eq(&self, other: &Credentials) -> bool {
|
|
match *other {
|
|
Credentials {
|
|
display_name: ref __self_1_0,
|
|
note: ref __self_1_1,
|
|
avatar: ref __self_1_2,
|
|
header: ref __self_1_3,
|
|
source: ref __self_1_4,
|
|
fields_attributes: ref __self_1_5 } =>
|
|
match *self {
|
|
Credentials {
|
|
display_name: ref __self_0_0,
|
|
note: ref __self_0_1,
|
|
avatar: ref __self_0_2,
|
|
header: ref __self_0_3,
|
|
source: ref __self_0_4,
|
|
fields_attributes: ref __self_0_5 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4) &&
|
|
(*__self_0_5) == (*__self_1_5),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Credentials) -> bool {
|
|
match *other {
|
|
Credentials {
|
|
display_name: ref __self_1_0,
|
|
note: ref __self_1_1,
|
|
avatar: ref __self_1_2,
|
|
header: ref __self_1_3,
|
|
source: ref __self_1_4,
|
|
fields_attributes: ref __self_1_5 } =>
|
|
match *self {
|
|
Credentials {
|
|
display_name: ref __self_0_0,
|
|
note: ref __self_0_1,
|
|
avatar: ref __self_0_2,
|
|
header: ref __self_0_3,
|
|
source: ref __self_0_4,
|
|
fields_attributes: ref __self_0_5 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4) ||
|
|
(*__self_0_5) != (*__self_1_5),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
mod fields_attributes_ser {
|
|
use super::*;
|
|
use serde::ser::{SerializeMap, Serializer};
|
|
pub(crate) fn ser<S>(attrs: &Vec<MetadataField>, serializer: S)
|
|
-> Result<S::Ok, S::Error> where S: Serializer {
|
|
let mut map = serializer.serialize_map(Some(attrs.len()))?;
|
|
for (i, field) in attrs.iter().enumerate() {
|
|
map.serialize_entry(&i, &field)?;
|
|
}
|
|
map.end()
|
|
}
|
|
}
|
|
}
|
|
/// Data structures for ser/de of attachment-related resources
|
|
pub mod attachment {
|
|
//! Module containing everything related to media attachements.
|
|
/// A struct representing a media attachment.
|
|
pub struct Attachment {
|
|
/// ID of the attachment.
|
|
pub id: String,
|
|
/// The media type of an attachment.
|
|
#[serde(rename = "type")]
|
|
pub media_type: MediaType,
|
|
/// URL of the locally hosted version of the image.
|
|
pub url: String,
|
|
/// For remote images, the remote URL of the original image.
|
|
pub remote_url: Option<String>,
|
|
/// URL of the preview image.
|
|
pub preview_url: String,
|
|
/// Shorter URL for the image, for insertion into text
|
|
/// (only present on local images)
|
|
pub text_url: Option<String>,
|
|
/// Meta information about the attachment.
|
|
pub meta: Option<Meta>,
|
|
/// Noop will be removed.
|
|
pub description: Option<String>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Attachment {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Attachment {
|
|
id: ref __self_0_0,
|
|
media_type: ref __self_0_1,
|
|
url: ref __self_0_2,
|
|
remote_url: ref __self_0_3,
|
|
preview_url: ref __self_0_4,
|
|
text_url: ref __self_0_5,
|
|
meta: ref __self_0_6,
|
|
description: ref __self_0_7 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Attachment");
|
|
let _ =
|
|
debug_trait_builder.field("id", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("media_type",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("url", &&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("remote_url",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("preview_url",
|
|
&&(*__self_0_4));
|
|
let _ =
|
|
debug_trait_builder.field("text_url",
|
|
&&(*__self_0_5));
|
|
let _ =
|
|
debug_trait_builder.field("meta",
|
|
&&(*__self_0_6));
|
|
let _ =
|
|
debug_trait_builder.field("description",
|
|
&&(*__self_0_7));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Attachment {
|
|
#[inline]
|
|
fn clone(&self) -> Attachment {
|
|
match *self {
|
|
Attachment {
|
|
id: ref __self_0_0,
|
|
media_type: ref __self_0_1,
|
|
url: ref __self_0_2,
|
|
remote_url: ref __self_0_3,
|
|
preview_url: ref __self_0_4,
|
|
text_url: ref __self_0_5,
|
|
meta: ref __self_0_6,
|
|
description: ref __self_0_7 } =>
|
|
Attachment{id:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
media_type:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
url:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
remote_url:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
preview_url:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),
|
|
text_url:
|
|
::core::clone::Clone::clone(&(*__self_0_5)),
|
|
meta:
|
|
::core::clone::Clone::clone(&(*__self_0_6)),
|
|
description:
|
|
::core::clone::Clone::clone(&(*__self_0_7)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Attachment: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Attachment {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
__field4,
|
|
__field5,
|
|
__field6,
|
|
__field7,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
4u64 =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
5u64 =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
6u64 =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
7u64 =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 8")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"type" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"url" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"remote_url" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
"preview_url" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
"text_url" =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
"meta" =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
"description" =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"type" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"url" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"remote_url" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
b"preview_url" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
b"text_url" =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
b"meta" =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
b"description" =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Attachment>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Attachment;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Attachment")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Attachment with 8 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<MediaType>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Attachment with 8 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Attachment with 8 elements"));
|
|
}
|
|
};
|
|
let __field3 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
|
|
&"struct Attachment with 8 elements"));
|
|
}
|
|
};
|
|
let __field4 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
|
|
&"struct Attachment with 8 elements"));
|
|
}
|
|
};
|
|
let __field5 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(5usize,
|
|
&"struct Attachment with 8 elements"));
|
|
}
|
|
};
|
|
let __field6 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<Meta>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(6usize,
|
|
&"struct Attachment with 8 elements"));
|
|
}
|
|
};
|
|
let __field7 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(7usize,
|
|
&"struct Attachment with 8 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Attachment{id: __field0,
|
|
media_type:
|
|
__field1,
|
|
url: __field2,
|
|
remote_url:
|
|
__field3,
|
|
preview_url:
|
|
__field4,
|
|
text_url:
|
|
__field5,
|
|
meta: __field6,
|
|
description:
|
|
__field7,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<MediaType> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field3:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field4:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field5:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field6:
|
|
_serde::export::Option<Option<Meta>> =
|
|
_serde::export::None;
|
|
let mut __field7:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("id"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("type"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<MediaType>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("url"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field3 => {
|
|
if _serde::export::Option::is_some(&__field3)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("remote_url"));
|
|
}
|
|
__field3 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field4 => {
|
|
if _serde::export::Option::is_some(&__field4)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("preview_url"));
|
|
}
|
|
__field4 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field5 => {
|
|
if _serde::export::Option::is_some(&__field5)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("text_url"));
|
|
}
|
|
__field5 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field6 => {
|
|
if _serde::export::Option::is_some(&__field6)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("meta"));
|
|
}
|
|
__field6 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Meta>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field7 => {
|
|
if _serde::export::Option::is_some(&__field7)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("description"));
|
|
}
|
|
__field7 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("id")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("type")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("url")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field3 =
|
|
match __field3 {
|
|
_serde::export::Some(__field3) =>
|
|
__field3,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("remote_url")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field4 =
|
|
match __field4 {
|
|
_serde::export::Some(__field4) =>
|
|
__field4,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("preview_url")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field5 =
|
|
match __field5 {
|
|
_serde::export::Some(__field5) =>
|
|
__field5,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("text_url")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field6 =
|
|
match __field6 {
|
|
_serde::export::Some(__field6) =>
|
|
__field6,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("meta")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field7 =
|
|
match __field7 {
|
|
_serde::export::Some(__field7) =>
|
|
__field7,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("description")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Attachment{id: __field0,
|
|
media_type:
|
|
__field1,
|
|
url: __field2,
|
|
remote_url:
|
|
__field3,
|
|
preview_url:
|
|
__field4,
|
|
text_url:
|
|
__field5,
|
|
meta: __field6,
|
|
description:
|
|
__field7,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["id", "type", "url", "remote_url",
|
|
"preview_url", "text_url", "meta",
|
|
"description"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Attachment",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Attachment>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Attachment { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Attachment {
|
|
#[inline]
|
|
fn eq(&self, other: &Attachment) -> bool {
|
|
match *other {
|
|
Attachment {
|
|
id: ref __self_1_0,
|
|
media_type: ref __self_1_1,
|
|
url: ref __self_1_2,
|
|
remote_url: ref __self_1_3,
|
|
preview_url: ref __self_1_4,
|
|
text_url: ref __self_1_5,
|
|
meta: ref __self_1_6,
|
|
description: ref __self_1_7 } =>
|
|
match *self {
|
|
Attachment {
|
|
id: ref __self_0_0,
|
|
media_type: ref __self_0_1,
|
|
url: ref __self_0_2,
|
|
remote_url: ref __self_0_3,
|
|
preview_url: ref __self_0_4,
|
|
text_url: ref __self_0_5,
|
|
meta: ref __self_0_6,
|
|
description: ref __self_0_7 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4) &&
|
|
(*__self_0_5) == (*__self_1_5) &&
|
|
(*__self_0_6) == (*__self_1_6) &&
|
|
(*__self_0_7) == (*__self_1_7),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Attachment) -> bool {
|
|
match *other {
|
|
Attachment {
|
|
id: ref __self_1_0,
|
|
media_type: ref __self_1_1,
|
|
url: ref __self_1_2,
|
|
remote_url: ref __self_1_3,
|
|
preview_url: ref __self_1_4,
|
|
text_url: ref __self_1_5,
|
|
meta: ref __self_1_6,
|
|
description: ref __self_1_7 } =>
|
|
match *self {
|
|
Attachment {
|
|
id: ref __self_0_0,
|
|
media_type: ref __self_0_1,
|
|
url: ref __self_0_2,
|
|
remote_url: ref __self_0_3,
|
|
preview_url: ref __self_0_4,
|
|
text_url: ref __self_0_5,
|
|
meta: ref __self_0_6,
|
|
description: ref __self_0_7 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4) ||
|
|
(*__self_0_5) != (*__self_1_5) ||
|
|
(*__self_0_6) != (*__self_1_6) ||
|
|
(*__self_0_7) != (*__self_1_7),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
/// Information about the attachment itself.
|
|
pub struct Meta {
|
|
/// Original version.
|
|
pub original: Option<ImageDetails>,
|
|
/// Smaller version.
|
|
pub small: Option<ImageDetails>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Meta {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Meta { original: ref __self_0_0, small: ref __self_0_1 }
|
|
=> {
|
|
let mut debug_trait_builder = f.debug_struct("Meta");
|
|
let _ =
|
|
debug_trait_builder.field("original",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("small",
|
|
&&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Meta: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Meta {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field { __field0, __field1, __ignore, }
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 2")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"original" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"small" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"original" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"small" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Meta>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Meta;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Meta")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<ImageDetails>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Meta with 2 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<ImageDetails>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Meta with 2 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Meta{original: __field0,
|
|
small: __field1,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<Option<ImageDetails>> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<Option<ImageDetails>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("original"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<ImageDetails>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("small"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<ImageDetails>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("original")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("small")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Meta{original: __field0,
|
|
small: __field1,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["original", "small"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Meta",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Meta>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Meta {
|
|
#[inline]
|
|
fn clone(&self) -> Meta {
|
|
match *self {
|
|
Meta { original: ref __self_0_0, small: ref __self_0_1 }
|
|
=>
|
|
Meta{original:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
small: ::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for Meta { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Meta {
|
|
#[inline]
|
|
fn eq(&self, other: &Meta) -> bool {
|
|
match *other {
|
|
Meta { original: ref __self_1_0, small: ref __self_1_1 }
|
|
=>
|
|
match *self {
|
|
Meta { original: ref __self_0_0, small: ref __self_0_1
|
|
} =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Meta) -> bool {
|
|
match *other {
|
|
Meta { original: ref __self_1_0, small: ref __self_1_1 }
|
|
=>
|
|
match *self {
|
|
Meta { original: ref __self_0_0, small: ref __self_0_1
|
|
} =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
/// Dimensions of an attachement.
|
|
pub struct ImageDetails {
|
|
/// width of attachment.
|
|
width: u64,
|
|
/// height of attachment.
|
|
height: u64,
|
|
/// A string of `widthxheight`.
|
|
size: Option<String>,
|
|
/// The aspect ratio of the attachment.
|
|
aspect: Option<f64>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for ImageDetails {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
ImageDetails {
|
|
width: ref __self_0_0,
|
|
height: ref __self_0_1,
|
|
size: ref __self_0_2,
|
|
aspect: ref __self_0_3 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("ImageDetails");
|
|
let _ =
|
|
debug_trait_builder.field("width",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("height",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("size",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("aspect",
|
|
&&(*__self_0_3));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_ImageDetails: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for ImageDetails {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 4")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"width" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"height" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"size" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"aspect" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"width" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"height" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"size" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"aspect" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<ImageDetails>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = ImageDetails;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct ImageDetails")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct ImageDetails with 4 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct ImageDetails with 4 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct ImageDetails with 4 elements"));
|
|
}
|
|
};
|
|
let __field3 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<f64>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
|
|
&"struct ImageDetails with 4 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(ImageDetails{width:
|
|
__field0,
|
|
height:
|
|
__field1,
|
|
size:
|
|
__field2,
|
|
aspect:
|
|
__field3,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<u64> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<u64> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field3:
|
|
_serde::export::Option<Option<f64>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("width"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("height"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("size"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field3 => {
|
|
if _serde::export::Option::is_some(&__field3)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("aspect"));
|
|
}
|
|
__field3 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<f64>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("width")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("height")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("size")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field3 =
|
|
match __field3 {
|
|
_serde::export::Some(__field3) =>
|
|
__field3,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("aspect")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(ImageDetails{width:
|
|
__field0,
|
|
height:
|
|
__field1,
|
|
size:
|
|
__field2,
|
|
aspect:
|
|
__field3,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["width", "height", "size", "aspect"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"ImageDetails",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<ImageDetails>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for ImageDetails {
|
|
#[inline]
|
|
fn clone(&self) -> ImageDetails {
|
|
match *self {
|
|
ImageDetails {
|
|
width: ref __self_0_0,
|
|
height: ref __self_0_1,
|
|
size: ref __self_0_2,
|
|
aspect: ref __self_0_3 } =>
|
|
ImageDetails{width:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
height:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
size:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
aspect:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for ImageDetails { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for ImageDetails {
|
|
#[inline]
|
|
fn eq(&self, other: &ImageDetails) -> bool {
|
|
match *other {
|
|
ImageDetails {
|
|
width: ref __self_1_0,
|
|
height: ref __self_1_1,
|
|
size: ref __self_1_2,
|
|
aspect: ref __self_1_3 } =>
|
|
match *self {
|
|
ImageDetails {
|
|
width: ref __self_0_0,
|
|
height: ref __self_0_1,
|
|
size: ref __self_0_2,
|
|
aspect: ref __self_0_3 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &ImageDetails) -> bool {
|
|
match *other {
|
|
ImageDetails {
|
|
width: ref __self_1_0,
|
|
height: ref __self_1_1,
|
|
size: ref __self_1_2,
|
|
aspect: ref __self_1_3 } =>
|
|
match *self {
|
|
ImageDetails {
|
|
width: ref __self_0_0,
|
|
height: ref __self_0_1,
|
|
size: ref __self_0_2,
|
|
aspect: ref __self_0_3 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
/// The type of media attachment.
|
|
pub enum MediaType {
|
|
|
|
/// An image.
|
|
#[serde(rename = "image")]
|
|
Image,
|
|
|
|
/// A video file.
|
|
#[serde(rename = "video")]
|
|
Video,
|
|
|
|
/// A gifv format file.
|
|
#[serde(rename = "gifv")]
|
|
Gifv,
|
|
|
|
/// Unknown format.
|
|
#[serde(rename = "unknown")]
|
|
Unknown,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for MediaType {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match (&*self,) {
|
|
(&MediaType::Image,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Image");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&MediaType::Video,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Video");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&MediaType::Gifv,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Gifv");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&MediaType::Unknown,) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("Unknown");
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_MediaType: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for MediaType {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"variant identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"variant index 0 <= i < 4")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"image" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"video" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"gifv" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"unknown" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
_serde::export::Err(_serde::de::Error::unknown_variant(__value,
|
|
VARIANTS))
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"image" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"video" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"gifv" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"unknown" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
let __value =
|
|
&_serde::export::from_utf8_lossy(__value);
|
|
_serde::export::Err(_serde::de::Error::unknown_variant(__value,
|
|
VARIANTS))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<MediaType>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = MediaType;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"enum MediaType")
|
|
}
|
|
fn visit_enum<__A>(self, __data: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::EnumAccess<'de> {
|
|
match match _serde::de::EnumAccess::variant(__data)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
(__Field::__field0, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(MediaType::Image)
|
|
}
|
|
(__Field::__field1, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(MediaType::Video)
|
|
}
|
|
(__Field::__field2, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(MediaType::Gifv)
|
|
}
|
|
(__Field::__field3, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(MediaType::Unknown)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
const VARIANTS: &'static [&'static str] =
|
|
&["image", "video", "gifv", "unknown"];
|
|
_serde::Deserializer::deserialize_enum(__deserializer,
|
|
"MediaType",
|
|
VARIANTS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<MediaType>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for MediaType {
|
|
#[inline]
|
|
fn clone(&self) -> MediaType { { *self } }
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::marker::Copy for MediaType { }
|
|
impl ::core::marker::StructuralPartialEq for MediaType { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for MediaType {
|
|
#[inline]
|
|
fn eq(&self, other: &MediaType) -> bool {
|
|
{
|
|
let __self_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*self)
|
|
};
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) { _ => true, }
|
|
} else { false }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// Data structures for ser/de of card-related resources
|
|
pub mod card {
|
|
//! Module representing cards of statuses.
|
|
/// A card of a status.
|
|
pub struct Card {
|
|
/// The url associated with the card.
|
|
pub url: String,
|
|
/// The title of the card.
|
|
pub title: String,
|
|
/// The card description.
|
|
pub description: String,
|
|
/// The image associated with the card, if any.
|
|
pub image: Option<String>,
|
|
/// OEmbed data
|
|
author_name: Option<String>,
|
|
/// OEmbed data
|
|
author_url: Option<String>,
|
|
/// OEmbed data
|
|
provider_name: Option<String>,
|
|
/// OEmbed data
|
|
provider_url: Option<String>,
|
|
/// OEmbed data
|
|
html: Option<String>,
|
|
/// OEmbed data
|
|
width: Option<u64>,
|
|
/// OEmbed data
|
|
height: Option<u64>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Card {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Card {
|
|
url: ref __self_0_0,
|
|
title: ref __self_0_1,
|
|
description: ref __self_0_2,
|
|
image: ref __self_0_3,
|
|
author_name: ref __self_0_4,
|
|
author_url: ref __self_0_5,
|
|
provider_name: ref __self_0_6,
|
|
provider_url: ref __self_0_7,
|
|
html: ref __self_0_8,
|
|
width: ref __self_0_9,
|
|
height: ref __self_0_10 } => {
|
|
let mut debug_trait_builder = f.debug_struct("Card");
|
|
let _ =
|
|
debug_trait_builder.field("url", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("title",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("description",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("image",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("author_name",
|
|
&&(*__self_0_4));
|
|
let _ =
|
|
debug_trait_builder.field("author_url",
|
|
&&(*__self_0_5));
|
|
let _ =
|
|
debug_trait_builder.field("provider_name",
|
|
&&(*__self_0_6));
|
|
let _ =
|
|
debug_trait_builder.field("provider_url",
|
|
&&(*__self_0_7));
|
|
let _ =
|
|
debug_trait_builder.field("html",
|
|
&&(*__self_0_8));
|
|
let _ =
|
|
debug_trait_builder.field("width",
|
|
&&(*__self_0_9));
|
|
let _ =
|
|
debug_trait_builder.field("height",
|
|
&&(*__self_0_10));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Card {
|
|
#[inline]
|
|
fn clone(&self) -> Card {
|
|
match *self {
|
|
Card {
|
|
url: ref __self_0_0,
|
|
title: ref __self_0_1,
|
|
description: ref __self_0_2,
|
|
image: ref __self_0_3,
|
|
author_name: ref __self_0_4,
|
|
author_url: ref __self_0_5,
|
|
provider_name: ref __self_0_6,
|
|
provider_url: ref __self_0_7,
|
|
html: ref __self_0_8,
|
|
width: ref __self_0_9,
|
|
height: ref __self_0_10 } =>
|
|
Card{url: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
title: ::core::clone::Clone::clone(&(*__self_0_1)),
|
|
description:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
image: ::core::clone::Clone::clone(&(*__self_0_3)),
|
|
author_name:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),
|
|
author_url:
|
|
::core::clone::Clone::clone(&(*__self_0_5)),
|
|
provider_name:
|
|
::core::clone::Clone::clone(&(*__self_0_6)),
|
|
provider_url:
|
|
::core::clone::Clone::clone(&(*__self_0_7)),
|
|
html: ::core::clone::Clone::clone(&(*__self_0_8)),
|
|
width: ::core::clone::Clone::clone(&(*__self_0_9)),
|
|
height:
|
|
::core::clone::Clone::clone(&(*__self_0_10)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Card: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Card {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
__field4,
|
|
__field5,
|
|
__field6,
|
|
__field7,
|
|
__field8,
|
|
__field9,
|
|
__field10,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
4u64 =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
5u64 =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
6u64 =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
7u64 =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
8u64 =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
9u64 =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
10u64 =>
|
|
_serde::export::Ok(__Field::__field10),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 11")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"url" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"title" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"description" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"image" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
"author_name" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
"author_url" =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
"provider_name" =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
"provider_url" =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
"html" =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
"width" =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
"height" =>
|
|
_serde::export::Ok(__Field::__field10),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"url" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"title" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"description" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"image" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
b"author_name" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
b"author_url" =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
b"provider_name" =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
b"provider_url" =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
b"html" =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
b"width" =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
b"height" =>
|
|
_serde::export::Ok(__Field::__field10),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Card>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Card;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Card")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Card with 11 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Card with 11 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Card with 11 elements"));
|
|
}
|
|
};
|
|
let __field3 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
|
|
&"struct Card with 11 elements"));
|
|
}
|
|
};
|
|
let __field4 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
|
|
&"struct Card with 11 elements"));
|
|
}
|
|
};
|
|
let __field5 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(5usize,
|
|
&"struct Card with 11 elements"));
|
|
}
|
|
};
|
|
let __field6 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(6usize,
|
|
&"struct Card with 11 elements"));
|
|
}
|
|
};
|
|
let __field7 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(7usize,
|
|
&"struct Card with 11 elements"));
|
|
}
|
|
};
|
|
let __field8 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(8usize,
|
|
&"struct Card with 11 elements"));
|
|
}
|
|
};
|
|
let __field9 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<u64>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(9usize,
|
|
&"struct Card with 11 elements"));
|
|
}
|
|
};
|
|
let __field10 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<u64>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(10usize,
|
|
&"struct Card with 11 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Card{url: __field0,
|
|
title: __field1,
|
|
description: __field2,
|
|
image: __field3,
|
|
author_name: __field4,
|
|
author_url: __field5,
|
|
provider_name:
|
|
__field6,
|
|
provider_url:
|
|
__field7,
|
|
html: __field8,
|
|
width: __field9,
|
|
height: __field10,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field3:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field4:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field5:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field6:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field7:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field8:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field9:
|
|
_serde::export::Option<Option<u64>> =
|
|
_serde::export::None;
|
|
let mut __field10:
|
|
_serde::export::Option<Option<u64>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("url"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("title"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("description"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field3 => {
|
|
if _serde::export::Option::is_some(&__field3)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("image"));
|
|
}
|
|
__field3 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field4 => {
|
|
if _serde::export::Option::is_some(&__field4)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("author_name"));
|
|
}
|
|
__field4 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field5 => {
|
|
if _serde::export::Option::is_some(&__field5)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("author_url"));
|
|
}
|
|
__field5 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field6 => {
|
|
if _serde::export::Option::is_some(&__field6)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("provider_name"));
|
|
}
|
|
__field6 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field7 => {
|
|
if _serde::export::Option::is_some(&__field7)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("provider_url"));
|
|
}
|
|
__field7 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field8 => {
|
|
if _serde::export::Option::is_some(&__field8)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("html"));
|
|
}
|
|
__field8 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field9 => {
|
|
if _serde::export::Option::is_some(&__field9)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("width"));
|
|
}
|
|
__field9 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<u64>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field10 => {
|
|
if _serde::export::Option::is_some(&__field10)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("height"));
|
|
}
|
|
__field10 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<u64>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("url")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("title")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("description")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field3 =
|
|
match __field3 {
|
|
_serde::export::Some(__field3) =>
|
|
__field3,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("image")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field4 =
|
|
match __field4 {
|
|
_serde::export::Some(__field4) =>
|
|
__field4,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("author_name")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field5 =
|
|
match __field5 {
|
|
_serde::export::Some(__field5) =>
|
|
__field5,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("author_url")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field6 =
|
|
match __field6 {
|
|
_serde::export::Some(__field6) =>
|
|
__field6,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("provider_name")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field7 =
|
|
match __field7 {
|
|
_serde::export::Some(__field7) =>
|
|
__field7,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("provider_url")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field8 =
|
|
match __field8 {
|
|
_serde::export::Some(__field8) =>
|
|
__field8,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("html")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field9 =
|
|
match __field9 {
|
|
_serde::export::Some(__field9) =>
|
|
__field9,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("width")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field10 =
|
|
match __field10 {
|
|
_serde::export::Some(__field10) =>
|
|
__field10,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("height")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Card{url: __field0,
|
|
title: __field1,
|
|
description: __field2,
|
|
image: __field3,
|
|
author_name: __field4,
|
|
author_url: __field5,
|
|
provider_name:
|
|
__field6,
|
|
provider_url:
|
|
__field7,
|
|
html: __field8,
|
|
width: __field9,
|
|
height: __field10,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["url", "title", "description", "image",
|
|
"author_name", "author_url", "provider_name",
|
|
"provider_url", "html", "width", "height"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Card",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Card>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Card { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Card {
|
|
#[inline]
|
|
fn eq(&self, other: &Card) -> bool {
|
|
match *other {
|
|
Card {
|
|
url: ref __self_1_0,
|
|
title: ref __self_1_1,
|
|
description: ref __self_1_2,
|
|
image: ref __self_1_3,
|
|
author_name: ref __self_1_4,
|
|
author_url: ref __self_1_5,
|
|
provider_name: ref __self_1_6,
|
|
provider_url: ref __self_1_7,
|
|
html: ref __self_1_8,
|
|
width: ref __self_1_9,
|
|
height: ref __self_1_10 } =>
|
|
match *self {
|
|
Card {
|
|
url: ref __self_0_0,
|
|
title: ref __self_0_1,
|
|
description: ref __self_0_2,
|
|
image: ref __self_0_3,
|
|
author_name: ref __self_0_4,
|
|
author_url: ref __self_0_5,
|
|
provider_name: ref __self_0_6,
|
|
provider_url: ref __self_0_7,
|
|
html: ref __self_0_8,
|
|
width: ref __self_0_9,
|
|
height: ref __self_0_10 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4) &&
|
|
(*__self_0_5) == (*__self_1_5) &&
|
|
(*__self_0_6) == (*__self_1_6) &&
|
|
(*__self_0_7) == (*__self_1_7) &&
|
|
(*__self_0_8) == (*__self_1_8) &&
|
|
(*__self_0_9) == (*__self_1_9) &&
|
|
(*__self_0_10) == (*__self_1_10),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Card) -> bool {
|
|
match *other {
|
|
Card {
|
|
url: ref __self_1_0,
|
|
title: ref __self_1_1,
|
|
description: ref __self_1_2,
|
|
image: ref __self_1_3,
|
|
author_name: ref __self_1_4,
|
|
author_url: ref __self_1_5,
|
|
provider_name: ref __self_1_6,
|
|
provider_url: ref __self_1_7,
|
|
html: ref __self_1_8,
|
|
width: ref __self_1_9,
|
|
height: ref __self_1_10 } =>
|
|
match *self {
|
|
Card {
|
|
url: ref __self_0_0,
|
|
title: ref __self_0_1,
|
|
description: ref __self_0_2,
|
|
image: ref __self_0_3,
|
|
author_name: ref __self_0_4,
|
|
author_url: ref __self_0_5,
|
|
provider_name: ref __self_0_6,
|
|
provider_url: ref __self_0_7,
|
|
html: ref __self_0_8,
|
|
width: ref __self_0_9,
|
|
height: ref __self_0_10 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4) ||
|
|
(*__self_0_5) != (*__self_1_5) ||
|
|
(*__self_0_6) != (*__self_1_6) ||
|
|
(*__self_0_7) != (*__self_1_7) ||
|
|
(*__self_0_8) != (*__self_1_8) ||
|
|
(*__self_0_9) != (*__self_1_9) ||
|
|
(*__self_0_10) != (*__self_1_10),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// Data structures for ser/de of contetx-related resources
|
|
pub mod context {
|
|
//! A module about contexts of statuses.
|
|
use super::status::Status;
|
|
/// A context of a status returning a list of statuses it replied to and
|
|
/// statuses replied to it.
|
|
pub struct Context {
|
|
/// Statuses that were replied to.
|
|
pub ancestors: Vec<Status>,
|
|
/// Statuses that replied to this status.
|
|
pub descendants: Vec<Status>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Context {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Context {
|
|
ancestors: ref __self_0_0, descendants: ref __self_0_1 }
|
|
=> {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Context");
|
|
let _ =
|
|
debug_trait_builder.field("ancestors",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("descendants",
|
|
&&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Context {
|
|
#[inline]
|
|
fn clone(&self) -> Context {
|
|
match *self {
|
|
Context {
|
|
ancestors: ref __self_0_0, descendants: ref __self_0_1 }
|
|
=>
|
|
Context{ancestors:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
descendants:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Context: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Context {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field { __field0, __field1, __ignore, }
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 2")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"ancestors" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"descendants" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"ancestors" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"descendants" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Context>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Context;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Context")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<Vec<Status>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Context with 2 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<Vec<Status>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Context with 2 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Context{ancestors:
|
|
__field0,
|
|
descendants:
|
|
__field1,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<Vec<Status>> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<Vec<Status>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("ancestors"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Status>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("descendants"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Status>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("ancestors")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("descendants")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Context{ancestors:
|
|
__field0,
|
|
descendants:
|
|
__field1,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["ancestors", "descendants"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Context",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Context>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Context { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Context {
|
|
#[inline]
|
|
fn eq(&self, other: &Context) -> bool {
|
|
match *other {
|
|
Context {
|
|
ancestors: ref __self_1_0, descendants: ref __self_1_1 }
|
|
=>
|
|
match *self {
|
|
Context {
|
|
ancestors: ref __self_0_0, descendants: ref __self_0_1
|
|
} =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Context) -> bool {
|
|
match *other {
|
|
Context {
|
|
ancestors: ref __self_1_0, descendants: ref __self_1_1 }
|
|
=>
|
|
match *self {
|
|
Context {
|
|
ancestors: ref __self_0_0, descendants: ref __self_0_1
|
|
} =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// Data structures for ser/de of streaming events
|
|
pub mod event {
|
|
use crate::entities::{notification::Notification, status::Status};
|
|
/// Events that come from the /streaming/user API call
|
|
pub enum Event {
|
|
|
|
/// Update event
|
|
Update(Status),
|
|
|
|
/// Notification event
|
|
Notification(Notification),
|
|
|
|
/// Delete event
|
|
Delete(String),
|
|
|
|
/// FiltersChanged event
|
|
FiltersChanged,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Event {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match (&*self,) {
|
|
(&Event::Update(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Update");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Event::Notification(ref __self_0),) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("Notification");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Event::Delete(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Delete");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Event::FiltersChanged,) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("FiltersChanged");
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Event {
|
|
#[inline]
|
|
fn clone(&self) -> Event {
|
|
match (&*self,) {
|
|
(&Event::Update(ref __self_0),) =>
|
|
Event::Update(::core::clone::Clone::clone(&(*__self_0))),
|
|
(&Event::Notification(ref __self_0),) =>
|
|
Event::Notification(::core::clone::Clone::clone(&(*__self_0))),
|
|
(&Event::Delete(ref __self_0),) =>
|
|
Event::Delete(::core::clone::Clone::clone(&(*__self_0))),
|
|
(&Event::FiltersChanged,) => Event::FiltersChanged,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// Data structures for ser/de of filter-related resources
|
|
pub mod filter {
|
|
/// Represents a single Filter
|
|
pub struct Filter {
|
|
id: String,
|
|
phrase: String,
|
|
context: Vec<FilterContext>,
|
|
expires_at: Option<String>,
|
|
irreversible: bool,
|
|
whole_word: bool,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Filter {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Filter {
|
|
id: ref __self_0_0,
|
|
phrase: ref __self_0_1,
|
|
context: ref __self_0_2,
|
|
expires_at: ref __self_0_3,
|
|
irreversible: ref __self_0_4,
|
|
whole_word: ref __self_0_5 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Filter");
|
|
let _ =
|
|
debug_trait_builder.field("id", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("phrase",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("context",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("expires_at",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("irreversible",
|
|
&&(*__self_0_4));
|
|
let _ =
|
|
debug_trait_builder.field("whole_word",
|
|
&&(*__self_0_5));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Filter {
|
|
#[inline]
|
|
fn clone(&self) -> Filter {
|
|
match *self {
|
|
Filter {
|
|
id: ref __self_0_0,
|
|
phrase: ref __self_0_1,
|
|
context: ref __self_0_2,
|
|
expires_at: ref __self_0_3,
|
|
irreversible: ref __self_0_4,
|
|
whole_word: ref __self_0_5 } =>
|
|
Filter{id: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
phrase:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
context:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
expires_at:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
irreversible:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),
|
|
whole_word:
|
|
::core::clone::Clone::clone(&(*__self_0_5)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for Filter { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Filter {
|
|
#[inline]
|
|
fn eq(&self, other: &Filter) -> bool {
|
|
match *other {
|
|
Filter {
|
|
id: ref __self_1_0,
|
|
phrase: ref __self_1_1,
|
|
context: ref __self_1_2,
|
|
expires_at: ref __self_1_3,
|
|
irreversible: ref __self_1_4,
|
|
whole_word: ref __self_1_5 } =>
|
|
match *self {
|
|
Filter {
|
|
id: ref __self_0_0,
|
|
phrase: ref __self_0_1,
|
|
context: ref __self_0_2,
|
|
expires_at: ref __self_0_3,
|
|
irreversible: ref __self_0_4,
|
|
whole_word: ref __self_0_5 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4) &&
|
|
(*__self_0_5) == (*__self_1_5),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Filter) -> bool {
|
|
match *other {
|
|
Filter {
|
|
id: ref __self_1_0,
|
|
phrase: ref __self_1_1,
|
|
context: ref __self_1_2,
|
|
expires_at: ref __self_1_3,
|
|
irreversible: ref __self_1_4,
|
|
whole_word: ref __self_1_5 } =>
|
|
match *self {
|
|
Filter {
|
|
id: ref __self_0_0,
|
|
phrase: ref __self_0_1,
|
|
context: ref __self_0_2,
|
|
expires_at: ref __self_0_3,
|
|
irreversible: ref __self_0_4,
|
|
whole_word: ref __self_0_5 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4) ||
|
|
(*__self_0_5) != (*__self_1_5),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Filter: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for Filter {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"Filter",
|
|
false
|
|
as
|
|
usize
|
|
+ 1
|
|
+ 1
|
|
+ 1
|
|
+ 1
|
|
+ 1
|
|
+
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"id",
|
|
&self.id)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"phrase",
|
|
&self.phrase)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"context",
|
|
&self.context)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"expires_at",
|
|
&self.expires_at)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"irreversible",
|
|
&self.irreversible)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"whole_word",
|
|
&self.whole_word)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Filter: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Filter {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
__field4,
|
|
__field5,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
4u64 =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
5u64 =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 6")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"phrase" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"context" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"expires_at" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
"irreversible" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
"whole_word" =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"phrase" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"context" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"expires_at" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
b"irreversible" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
b"whole_word" =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Filter>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Filter;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Filter")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Filter with 6 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Filter with 6 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<Vec<FilterContext>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Filter with 6 elements"));
|
|
}
|
|
};
|
|
let __field3 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
|
|
&"struct Filter with 6 elements"));
|
|
}
|
|
};
|
|
let __field4 =
|
|
match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
|
|
&"struct Filter with 6 elements"));
|
|
}
|
|
};
|
|
let __field5 =
|
|
match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(5usize,
|
|
&"struct Filter with 6 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Filter{id: __field0,
|
|
phrase: __field1,
|
|
context: __field2,
|
|
expires_at:
|
|
__field3,
|
|
irreversible:
|
|
__field4,
|
|
whole_word:
|
|
__field5,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<Vec<FilterContext>> =
|
|
_serde::export::None;
|
|
let mut __field3:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field4:
|
|
_serde::export::Option<bool> =
|
|
_serde::export::None;
|
|
let mut __field5:
|
|
_serde::export::Option<bool> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("id"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("phrase"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("context"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<FilterContext>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field3 => {
|
|
if _serde::export::Option::is_some(&__field3)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("expires_at"));
|
|
}
|
|
__field3 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field4 => {
|
|
if _serde::export::Option::is_some(&__field4)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("irreversible"));
|
|
}
|
|
__field4 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field5 => {
|
|
if _serde::export::Option::is_some(&__field5)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("whole_word"));
|
|
}
|
|
__field5 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("id")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("phrase")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("context")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field3 =
|
|
match __field3 {
|
|
_serde::export::Some(__field3) =>
|
|
__field3,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("expires_at")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field4 =
|
|
match __field4 {
|
|
_serde::export::Some(__field4) =>
|
|
__field4,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("irreversible")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field5 =
|
|
match __field5 {
|
|
_serde::export::Some(__field5) =>
|
|
__field5,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("whole_word")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Filter{id: __field0,
|
|
phrase: __field1,
|
|
context: __field2,
|
|
expires_at:
|
|
__field3,
|
|
irreversible:
|
|
__field4,
|
|
whole_word:
|
|
__field5,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["id", "phrase", "context", "expires_at",
|
|
"irreversible", "whole_word"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Filter",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Filter>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
/// Represents the various types of Filter contexts
|
|
pub enum FilterContext {
|
|
|
|
/// Represents the "home" context
|
|
#[serde(rename = "home")]
|
|
Home,
|
|
|
|
/// Represents the "notifications" context
|
|
#[serde(rename = "notifications")]
|
|
Notifications,
|
|
|
|
/// Represents the "public" context
|
|
#[serde(rename = "public")]
|
|
Public,
|
|
|
|
/// Represents the "thread" context
|
|
#[serde(rename = "thread")]
|
|
Thread,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for FilterContext {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match (&*self,) {
|
|
(&FilterContext::Home,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Home");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&FilterContext::Notifications,) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("Notifications");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&FilterContext::Public,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Public");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&FilterContext::Thread,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Thread");
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for FilterContext {
|
|
#[inline]
|
|
fn clone(&self) -> FilterContext { { *self } }
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::marker::Copy for FilterContext { }
|
|
impl ::core::marker::StructuralPartialEq for FilterContext { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for FilterContext {
|
|
#[inline]
|
|
fn eq(&self, other: &FilterContext) -> bool {
|
|
{
|
|
let __self_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*self)
|
|
};
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) { _ => true, }
|
|
} else { false }
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_FilterContext: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for FilterContext {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
match *self {
|
|
FilterContext::Home =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"FilterContext",
|
|
0u32,
|
|
"home"),
|
|
FilterContext::Notifications =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"FilterContext",
|
|
1u32,
|
|
"notifications"),
|
|
FilterContext::Public =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"FilterContext",
|
|
2u32,
|
|
"public"),
|
|
FilterContext::Thread =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"FilterContext",
|
|
3u32,
|
|
"thread"),
|
|
}
|
|
}
|
|
}
|
|
};
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_FilterContext: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for FilterContext {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"variant identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"variant index 0 <= i < 4")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"home" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"notifications" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"public" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"thread" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
_serde::export::Err(_serde::de::Error::unknown_variant(__value,
|
|
VARIANTS))
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"home" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"notifications" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"public" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"thread" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
let __value =
|
|
&_serde::export::from_utf8_lossy(__value);
|
|
_serde::export::Err(_serde::de::Error::unknown_variant(__value,
|
|
VARIANTS))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<FilterContext>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = FilterContext;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"enum FilterContext")
|
|
}
|
|
fn visit_enum<__A>(self, __data: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::EnumAccess<'de> {
|
|
match match _serde::de::EnumAccess::variant(__data)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
(__Field::__field0, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(FilterContext::Home)
|
|
}
|
|
(__Field::__field1, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(FilterContext::Notifications)
|
|
}
|
|
(__Field::__field2, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(FilterContext::Public)
|
|
}
|
|
(__Field::__field3, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(FilterContext::Thread)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
const VARIANTS: &'static [&'static str] =
|
|
&["home", "notifications", "public", "thread"];
|
|
_serde::Deserializer::deserialize_enum(__deserializer,
|
|
"FilterContext",
|
|
VARIANTS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<FilterContext>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
}
|
|
/// Data structures for ser/de of instance-related resources
|
|
pub mod instance {
|
|
//! Module containing everything related to an instance.
|
|
use super::account::Account;
|
|
/// A struct containing info of an instance.
|
|
pub struct Instance {
|
|
/// URI of the current instance
|
|
pub uri: String,
|
|
/// The instance's title.
|
|
pub title: String,
|
|
/// A description for the instance.
|
|
pub description: String,
|
|
/// An email address which can be used to contact the
|
|
/// instance administrator.
|
|
pub email: String,
|
|
/// The Mastodon version used by instance.
|
|
pub version: String,
|
|
/// Urls to the streaming api.
|
|
pub urls: Option<StreamingApi>,
|
|
/// Stats about the instance.
|
|
pub stats: Option<Stats>,
|
|
/// Thumbnail of the server image.
|
|
pub thumbnail: Option<String>,
|
|
/// List of languages used on the server.
|
|
pub languages: Option<Vec<String>>,
|
|
/// Contact account for the server.
|
|
pub contact_account: Option<Account>,
|
|
/// The maximum number of characters allowed in a status
|
|
pub max_toot_chars: Option<u32>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Instance {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Instance {
|
|
uri: ref __self_0_0,
|
|
title: ref __self_0_1,
|
|
description: ref __self_0_2,
|
|
email: ref __self_0_3,
|
|
version: ref __self_0_4,
|
|
urls: ref __self_0_5,
|
|
stats: ref __self_0_6,
|
|
thumbnail: ref __self_0_7,
|
|
languages: ref __self_0_8,
|
|
contact_account: ref __self_0_9,
|
|
max_toot_chars: ref __self_0_10 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Instance");
|
|
let _ =
|
|
debug_trait_builder.field("uri", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("title",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("description",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("email",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("version",
|
|
&&(*__self_0_4));
|
|
let _ =
|
|
debug_trait_builder.field("urls",
|
|
&&(*__self_0_5));
|
|
let _ =
|
|
debug_trait_builder.field("stats",
|
|
&&(*__self_0_6));
|
|
let _ =
|
|
debug_trait_builder.field("thumbnail",
|
|
&&(*__self_0_7));
|
|
let _ =
|
|
debug_trait_builder.field("languages",
|
|
&&(*__self_0_8));
|
|
let _ =
|
|
debug_trait_builder.field("contact_account",
|
|
&&(*__self_0_9));
|
|
let _ =
|
|
debug_trait_builder.field("max_toot_chars",
|
|
&&(*__self_0_10));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Instance {
|
|
#[inline]
|
|
fn clone(&self) -> Instance {
|
|
match *self {
|
|
Instance {
|
|
uri: ref __self_0_0,
|
|
title: ref __self_0_1,
|
|
description: ref __self_0_2,
|
|
email: ref __self_0_3,
|
|
version: ref __self_0_4,
|
|
urls: ref __self_0_5,
|
|
stats: ref __self_0_6,
|
|
thumbnail: ref __self_0_7,
|
|
languages: ref __self_0_8,
|
|
contact_account: ref __self_0_9,
|
|
max_toot_chars: ref __self_0_10 } =>
|
|
Instance{uri: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
title:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
description:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
email:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
version:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),
|
|
urls:
|
|
::core::clone::Clone::clone(&(*__self_0_5)),
|
|
stats:
|
|
::core::clone::Clone::clone(&(*__self_0_6)),
|
|
thumbnail:
|
|
::core::clone::Clone::clone(&(*__self_0_7)),
|
|
languages:
|
|
::core::clone::Clone::clone(&(*__self_0_8)),
|
|
contact_account:
|
|
::core::clone::Clone::clone(&(*__self_0_9)),
|
|
max_toot_chars:
|
|
::core::clone::Clone::clone(&(*__self_0_10)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Instance: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Instance {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
__field4,
|
|
__field5,
|
|
__field6,
|
|
__field7,
|
|
__field8,
|
|
__field9,
|
|
__field10,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
4u64 =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
5u64 =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
6u64 =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
7u64 =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
8u64 =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
9u64 =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
10u64 =>
|
|
_serde::export::Ok(__Field::__field10),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 11")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"uri" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"title" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"description" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"email" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
"version" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
"urls" =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
"stats" =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
"thumbnail" =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
"languages" =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
"contact_account" =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
"max_toot_chars" =>
|
|
_serde::export::Ok(__Field::__field10),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"uri" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"title" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"description" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"email" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
b"version" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
b"urls" =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
b"stats" =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
b"thumbnail" =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
b"languages" =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
b"contact_account" =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
b"max_toot_chars" =>
|
|
_serde::export::Ok(__Field::__field10),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Instance>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Instance;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Instance")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Instance with 11 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Instance with 11 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Instance with 11 elements"));
|
|
}
|
|
};
|
|
let __field3 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
|
|
&"struct Instance with 11 elements"));
|
|
}
|
|
};
|
|
let __field4 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
|
|
&"struct Instance with 11 elements"));
|
|
}
|
|
};
|
|
let __field5 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<StreamingApi>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(5usize,
|
|
&"struct Instance with 11 elements"));
|
|
}
|
|
};
|
|
let __field6 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<Stats>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(6usize,
|
|
&"struct Instance with 11 elements"));
|
|
}
|
|
};
|
|
let __field7 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(7usize,
|
|
&"struct Instance with 11 elements"));
|
|
}
|
|
};
|
|
let __field8 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<Vec<String>>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(8usize,
|
|
&"struct Instance with 11 elements"));
|
|
}
|
|
};
|
|
let __field9 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<Account>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(9usize,
|
|
&"struct Instance with 11 elements"));
|
|
}
|
|
};
|
|
let __field10 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<u32>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(10usize,
|
|
&"struct Instance with 11 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Instance{uri: __field0,
|
|
title: __field1,
|
|
description:
|
|
__field2,
|
|
email: __field3,
|
|
version: __field4,
|
|
urls: __field5,
|
|
stats: __field6,
|
|
thumbnail:
|
|
__field7,
|
|
languages:
|
|
__field8,
|
|
contact_account:
|
|
__field9,
|
|
max_toot_chars:
|
|
__field10,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field3:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field4:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field5:
|
|
_serde::export::Option<Option<StreamingApi>> =
|
|
_serde::export::None;
|
|
let mut __field6:
|
|
_serde::export::Option<Option<Stats>> =
|
|
_serde::export::None;
|
|
let mut __field7:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field8:
|
|
_serde::export::Option<Option<Vec<String>>> =
|
|
_serde::export::None;
|
|
let mut __field9:
|
|
_serde::export::Option<Option<Account>> =
|
|
_serde::export::None;
|
|
let mut __field10:
|
|
_serde::export::Option<Option<u32>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("uri"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("title"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("description"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field3 => {
|
|
if _serde::export::Option::is_some(&__field3)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("email"));
|
|
}
|
|
__field3 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field4 => {
|
|
if _serde::export::Option::is_some(&__field4)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("version"));
|
|
}
|
|
__field4 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field5 => {
|
|
if _serde::export::Option::is_some(&__field5)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("urls"));
|
|
}
|
|
__field5 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<StreamingApi>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field6 => {
|
|
if _serde::export::Option::is_some(&__field6)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("stats"));
|
|
}
|
|
__field6 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Stats>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field7 => {
|
|
if _serde::export::Option::is_some(&__field7)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("thumbnail"));
|
|
}
|
|
__field7 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field8 => {
|
|
if _serde::export::Option::is_some(&__field8)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("languages"));
|
|
}
|
|
__field8 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Vec<String>>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field9 => {
|
|
if _serde::export::Option::is_some(&__field9)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("contact_account"));
|
|
}
|
|
__field9 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Account>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field10 => {
|
|
if _serde::export::Option::is_some(&__field10)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("max_toot_chars"));
|
|
}
|
|
__field10 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<u32>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("uri")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("title")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("description")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field3 =
|
|
match __field3 {
|
|
_serde::export::Some(__field3) =>
|
|
__field3,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("email")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field4 =
|
|
match __field4 {
|
|
_serde::export::Some(__field4) =>
|
|
__field4,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("version")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field5 =
|
|
match __field5 {
|
|
_serde::export::Some(__field5) =>
|
|
__field5,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("urls")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field6 =
|
|
match __field6 {
|
|
_serde::export::Some(__field6) =>
|
|
__field6,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("stats")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field7 =
|
|
match __field7 {
|
|
_serde::export::Some(__field7) =>
|
|
__field7,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("thumbnail")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field8 =
|
|
match __field8 {
|
|
_serde::export::Some(__field8) =>
|
|
__field8,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("languages")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field9 =
|
|
match __field9 {
|
|
_serde::export::Some(__field9) =>
|
|
__field9,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("contact_account")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field10 =
|
|
match __field10 {
|
|
_serde::export::Some(__field10) =>
|
|
__field10,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("max_toot_chars")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Instance{uri: __field0,
|
|
title: __field1,
|
|
description:
|
|
__field2,
|
|
email: __field3,
|
|
version: __field4,
|
|
urls: __field5,
|
|
stats: __field6,
|
|
thumbnail:
|
|
__field7,
|
|
languages:
|
|
__field8,
|
|
contact_account:
|
|
__field9,
|
|
max_toot_chars:
|
|
__field10,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["uri", "title", "description", "email",
|
|
"version", "urls", "stats", "thumbnail",
|
|
"languages", "contact_account",
|
|
"max_toot_chars"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Instance",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Instance>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Instance { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Instance {
|
|
#[inline]
|
|
fn eq(&self, other: &Instance) -> bool {
|
|
match *other {
|
|
Instance {
|
|
uri: ref __self_1_0,
|
|
title: ref __self_1_1,
|
|
description: ref __self_1_2,
|
|
email: ref __self_1_3,
|
|
version: ref __self_1_4,
|
|
urls: ref __self_1_5,
|
|
stats: ref __self_1_6,
|
|
thumbnail: ref __self_1_7,
|
|
languages: ref __self_1_8,
|
|
contact_account: ref __self_1_9,
|
|
max_toot_chars: ref __self_1_10 } =>
|
|
match *self {
|
|
Instance {
|
|
uri: ref __self_0_0,
|
|
title: ref __self_0_1,
|
|
description: ref __self_0_2,
|
|
email: ref __self_0_3,
|
|
version: ref __self_0_4,
|
|
urls: ref __self_0_5,
|
|
stats: ref __self_0_6,
|
|
thumbnail: ref __self_0_7,
|
|
languages: ref __self_0_8,
|
|
contact_account: ref __self_0_9,
|
|
max_toot_chars: ref __self_0_10 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4) &&
|
|
(*__self_0_5) == (*__self_1_5) &&
|
|
(*__self_0_6) == (*__self_1_6) &&
|
|
(*__self_0_7) == (*__self_1_7) &&
|
|
(*__self_0_8) == (*__self_1_8) &&
|
|
(*__self_0_9) == (*__self_1_9) &&
|
|
(*__self_0_10) == (*__self_1_10),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Instance) -> bool {
|
|
match *other {
|
|
Instance {
|
|
uri: ref __self_1_0,
|
|
title: ref __self_1_1,
|
|
description: ref __self_1_2,
|
|
email: ref __self_1_3,
|
|
version: ref __self_1_4,
|
|
urls: ref __self_1_5,
|
|
stats: ref __self_1_6,
|
|
thumbnail: ref __self_1_7,
|
|
languages: ref __self_1_8,
|
|
contact_account: ref __self_1_9,
|
|
max_toot_chars: ref __self_1_10 } =>
|
|
match *self {
|
|
Instance {
|
|
uri: ref __self_0_0,
|
|
title: ref __self_0_1,
|
|
description: ref __self_0_2,
|
|
email: ref __self_0_3,
|
|
version: ref __self_0_4,
|
|
urls: ref __self_0_5,
|
|
stats: ref __self_0_6,
|
|
thumbnail: ref __self_0_7,
|
|
languages: ref __self_0_8,
|
|
contact_account: ref __self_0_9,
|
|
max_toot_chars: ref __self_0_10 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4) ||
|
|
(*__self_0_5) != (*__self_1_5) ||
|
|
(*__self_0_6) != (*__self_1_6) ||
|
|
(*__self_0_7) != (*__self_1_7) ||
|
|
(*__self_0_8) != (*__self_1_8) ||
|
|
(*__self_0_9) != (*__self_1_9) ||
|
|
(*__self_0_10) != (*__self_1_10),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
/// Object containing url for streaming api.
|
|
pub struct StreamingApi {
|
|
/// Url for streaming API, typically a `wss://` url.
|
|
pub streaming_api: String,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for StreamingApi {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
StreamingApi { streaming_api: ref __self_0_0 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("StreamingApi");
|
|
let _ =
|
|
debug_trait_builder.field("streaming_api",
|
|
&&(*__self_0_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for StreamingApi {
|
|
#[inline]
|
|
fn clone(&self) -> StreamingApi {
|
|
match *self {
|
|
StreamingApi { streaming_api: ref __self_0_0 } =>
|
|
StreamingApi{streaming_api:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_StreamingApi: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for StreamingApi {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field { __field0, __ignore, }
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 1")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"streaming_api" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"streaming_api" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<StreamingApi>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = StreamingApi;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct StreamingApi")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct StreamingApi with 1 element"));
|
|
}
|
|
};
|
|
_serde::export::Ok(StreamingApi{streaming_api:
|
|
__field0,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("streaming_api"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("streaming_api")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(StreamingApi{streaming_api:
|
|
__field0,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["streaming_api"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"StreamingApi",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<StreamingApi>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for StreamingApi { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for StreamingApi {
|
|
#[inline]
|
|
fn eq(&self, other: &StreamingApi) -> bool {
|
|
match *other {
|
|
StreamingApi { streaming_api: ref __self_1_0 } =>
|
|
match *self {
|
|
StreamingApi { streaming_api: ref __self_0_0 } =>
|
|
(*__self_0_0) == (*__self_1_0),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &StreamingApi) -> bool {
|
|
match *other {
|
|
StreamingApi { streaming_api: ref __self_1_0 } =>
|
|
match *self {
|
|
StreamingApi { streaming_api: ref __self_0_0 } =>
|
|
(*__self_0_0) != (*__self_1_0),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
/// Statistics about the Mastodon instance.
|
|
pub struct Stats {
|
|
user_count: u64,
|
|
status_count: u64,
|
|
domain_count: u64,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Stats {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Stats {
|
|
user_count: ref __self_0_0,
|
|
status_count: ref __self_0_1,
|
|
domain_count: ref __self_0_2 } => {
|
|
let mut debug_trait_builder = f.debug_struct("Stats");
|
|
let _ =
|
|
debug_trait_builder.field("user_count",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("status_count",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("domain_count",
|
|
&&(*__self_0_2));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Stats {
|
|
#[inline]
|
|
fn clone(&self) -> Stats {
|
|
{
|
|
let _: ::core::clone::AssertParamIsClone<u64>;
|
|
let _: ::core::clone::AssertParamIsClone<u64>;
|
|
let _: ::core::clone::AssertParamIsClone<u64>;
|
|
*self
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::marker::Copy for Stats { }
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Stats: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Stats {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 3")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"user_count" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"status_count" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"domain_count" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"user_count" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"status_count" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"domain_count" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Stats>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Stats;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Stats")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Stats with 3 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Stats with 3 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Stats with 3 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Stats{user_count: __field0,
|
|
status_count:
|
|
__field1,
|
|
domain_count:
|
|
__field2,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<u64> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<u64> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<u64> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("user_count"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("status_count"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("domain_count"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("user_count")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("status_count")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("domain_count")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Stats{user_count: __field0,
|
|
status_count:
|
|
__field1,
|
|
domain_count:
|
|
__field2,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["user_count", "status_count", "domain_count"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Stats",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Stats>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Stats { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Stats {
|
|
#[inline]
|
|
fn eq(&self, other: &Stats) -> bool {
|
|
match *other {
|
|
Stats {
|
|
user_count: ref __self_1_0,
|
|
status_count: ref __self_1_1,
|
|
domain_count: ref __self_1_2 } =>
|
|
match *self {
|
|
Stats {
|
|
user_count: ref __self_0_0,
|
|
status_count: ref __self_0_1,
|
|
domain_count: ref __self_0_2 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Stats) -> bool {
|
|
match *other {
|
|
Stats {
|
|
user_count: ref __self_1_0,
|
|
status_count: ref __self_1_1,
|
|
domain_count: ref __self_1_2 } =>
|
|
match *self {
|
|
Stats {
|
|
user_count: ref __self_0_0,
|
|
status_count: ref __self_0_1,
|
|
domain_count: ref __self_0_2 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// Data structures for ser/de of list-related resources
|
|
pub mod list {
|
|
/// Used for ser/de of list resources
|
|
pub struct List {
|
|
id: String,
|
|
title: String,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for List {
|
|
#[inline]
|
|
fn clone(&self) -> List {
|
|
match *self {
|
|
List { id: ref __self_0_0, title: ref __self_0_1 } =>
|
|
List{id: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
title: ::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for List {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
List { id: ref __self_0_0, title: ref __self_0_1 } => {
|
|
let mut debug_trait_builder = f.debug_struct("List");
|
|
let _ =
|
|
debug_trait_builder.field("id", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("title",
|
|
&&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_List: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for List {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field { __field0, __field1, __ignore, }
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 2")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"title" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"title" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<List>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = List;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct List")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct List with 2 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct List with 2 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(List{id: __field0,
|
|
title: __field1,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("id"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("title"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("id")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("title")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(List{id: __field0,
|
|
title: __field1,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["id", "title"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"List",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<List>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for List { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for List {
|
|
#[inline]
|
|
fn eq(&self, other: &List) -> bool {
|
|
match *other {
|
|
List { id: ref __self_1_0, title: ref __self_1_1 } =>
|
|
match *self {
|
|
List { id: ref __self_0_0, title: ref __self_0_1 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &List) -> bool {
|
|
match *other {
|
|
List { id: ref __self_1_0, title: ref __self_1_1 } =>
|
|
match *self {
|
|
List { id: ref __self_0_0, title: ref __self_0_1 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// Data structures for ser/de of mention-related resources
|
|
pub mod mention {
|
|
/// Represents a `mention` used in a status
|
|
pub struct Mention {
|
|
/// URL of user's profile (can be remote)
|
|
pub url: String,
|
|
/// The username of the account
|
|
pub username: String,
|
|
/// Equals username for local users, includes `@domain` for remote ones
|
|
pub acct: String,
|
|
/// Account ID
|
|
pub id: String,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Mention {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Mention {
|
|
url: ref __self_0_0,
|
|
username: ref __self_0_1,
|
|
acct: ref __self_0_2,
|
|
id: ref __self_0_3 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Mention");
|
|
let _ =
|
|
debug_trait_builder.field("url", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("username",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("acct",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("id", &&(*__self_0_3));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Mention {
|
|
#[inline]
|
|
fn clone(&self) -> Mention {
|
|
match *self {
|
|
Mention {
|
|
url: ref __self_0_0,
|
|
username: ref __self_0_1,
|
|
acct: ref __self_0_2,
|
|
id: ref __self_0_3 } =>
|
|
Mention{url: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
username:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
acct: ::core::clone::Clone::clone(&(*__self_0_2)),
|
|
id: ::core::clone::Clone::clone(&(*__self_0_3)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for Mention { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Mention {
|
|
#[inline]
|
|
fn eq(&self, other: &Mention) -> bool {
|
|
match *other {
|
|
Mention {
|
|
url: ref __self_1_0,
|
|
username: ref __self_1_1,
|
|
acct: ref __self_1_2,
|
|
id: ref __self_1_3 } =>
|
|
match *self {
|
|
Mention {
|
|
url: ref __self_0_0,
|
|
username: ref __self_0_1,
|
|
acct: ref __self_0_2,
|
|
id: ref __self_0_3 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Mention) -> bool {
|
|
match *other {
|
|
Mention {
|
|
url: ref __self_1_0,
|
|
username: ref __self_1_1,
|
|
acct: ref __self_1_2,
|
|
id: ref __self_1_3 } =>
|
|
match *self {
|
|
Mention {
|
|
url: ref __self_0_0,
|
|
username: ref __self_0_1,
|
|
acct: ref __self_0_2,
|
|
id: ref __self_0_3 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// Data structures for ser/de of notification-related resources
|
|
pub mod notification {
|
|
//! Module containing all info about notifications.
|
|
use super::{account::Account, status::Status};
|
|
use chrono::prelude::*;
|
|
/// A struct containing info about a notification.
|
|
pub struct Notification {
|
|
/// The notification ID.
|
|
pub id: String,
|
|
/// The type of notification.
|
|
#[serde(rename = "type")]
|
|
pub notification_type: NotificationType,
|
|
/// The time the notification was created.
|
|
pub created_at: DateTime<Utc>,
|
|
/// The Account sending the notification to the user.
|
|
pub account: Account,
|
|
/// The Status associated with the notification, if applicable.
|
|
pub status: Option<Status>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Notification {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Notification {
|
|
id: ref __self_0_0,
|
|
notification_type: ref __self_0_1,
|
|
created_at: ref __self_0_2,
|
|
account: ref __self_0_3,
|
|
status: ref __self_0_4 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Notification");
|
|
let _ =
|
|
debug_trait_builder.field("id", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("notification_type",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("created_at",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("account",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("status",
|
|
&&(*__self_0_4));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Notification {
|
|
#[inline]
|
|
fn clone(&self) -> Notification {
|
|
match *self {
|
|
Notification {
|
|
id: ref __self_0_0,
|
|
notification_type: ref __self_0_1,
|
|
created_at: ref __self_0_2,
|
|
account: ref __self_0_3,
|
|
status: ref __self_0_4 } =>
|
|
Notification{id:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
notification_type:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
created_at:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
account:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
status:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Notification: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Notification {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
__field4,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
4u64 =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 5")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"type" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"created_at" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"account" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
"status" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"type" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"created_at" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"account" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
b"status" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Notification>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Notification;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Notification")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Notification with 5 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<NotificationType>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Notification with 5 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<DateTime<Utc>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Notification with 5 elements"));
|
|
}
|
|
};
|
|
let __field3 =
|
|
match match _serde::de::SeqAccess::next_element::<Account>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
|
|
&"struct Notification with 5 elements"));
|
|
}
|
|
};
|
|
let __field4 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<Status>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
|
|
&"struct Notification with 5 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Notification{id: __field0,
|
|
notification_type:
|
|
__field1,
|
|
created_at:
|
|
__field2,
|
|
account:
|
|
__field3,
|
|
status:
|
|
__field4,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<NotificationType> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<DateTime<Utc>> =
|
|
_serde::export::None;
|
|
let mut __field3:
|
|
_serde::export::Option<Account> =
|
|
_serde::export::None;
|
|
let mut __field4:
|
|
_serde::export::Option<Option<Status>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("id"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("type"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<NotificationType>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("created_at"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<DateTime<Utc>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field3 => {
|
|
if _serde::export::Option::is_some(&__field3)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("account"));
|
|
}
|
|
__field3 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Account>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field4 => {
|
|
if _serde::export::Option::is_some(&__field4)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("status"));
|
|
}
|
|
__field4 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Status>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("id")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("type")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("created_at")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field3 =
|
|
match __field3 {
|
|
_serde::export::Some(__field3) =>
|
|
__field3,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("account")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field4 =
|
|
match __field4 {
|
|
_serde::export::Some(__field4) =>
|
|
__field4,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("status")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Notification{id: __field0,
|
|
notification_type:
|
|
__field1,
|
|
created_at:
|
|
__field2,
|
|
account:
|
|
__field3,
|
|
status:
|
|
__field4,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["id", "type", "created_at", "account",
|
|
"status"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Notification",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Notification>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Notification { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Notification {
|
|
#[inline]
|
|
fn eq(&self, other: &Notification) -> bool {
|
|
match *other {
|
|
Notification {
|
|
id: ref __self_1_0,
|
|
notification_type: ref __self_1_1,
|
|
created_at: ref __self_1_2,
|
|
account: ref __self_1_3,
|
|
status: ref __self_1_4 } =>
|
|
match *self {
|
|
Notification {
|
|
id: ref __self_0_0,
|
|
notification_type: ref __self_0_1,
|
|
created_at: ref __self_0_2,
|
|
account: ref __self_0_3,
|
|
status: ref __self_0_4 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Notification) -> bool {
|
|
match *other {
|
|
Notification {
|
|
id: ref __self_1_0,
|
|
notification_type: ref __self_1_1,
|
|
created_at: ref __self_1_2,
|
|
account: ref __self_1_3,
|
|
status: ref __self_1_4 } =>
|
|
match *self {
|
|
Notification {
|
|
id: ref __self_0_0,
|
|
notification_type: ref __self_0_1,
|
|
created_at: ref __self_0_2,
|
|
account: ref __self_0_3,
|
|
status: ref __self_0_4 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
/// The type of notification.
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum NotificationType {
|
|
|
|
/// Someone mentioned the application client in another status.
|
|
Mention,
|
|
|
|
/// Someone reblogged one of the application client's statuses.
|
|
Reblog,
|
|
|
|
/// Someone favourited one of the application client's statuses.
|
|
Favourite,
|
|
|
|
/// Someone followed the application client.
|
|
Follow,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for NotificationType {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match (&*self,) {
|
|
(&NotificationType::Mention,) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("Mention");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&NotificationType::Reblog,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Reblog");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&NotificationType::Favourite,) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("Favourite");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&NotificationType::Follow,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Follow");
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for NotificationType {
|
|
#[inline]
|
|
fn clone(&self) -> NotificationType { { *self } }
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::marker::Copy for NotificationType { }
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_NotificationType: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for NotificationType {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"variant identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"variant index 0 <= i < 4")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"mention" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"reblog" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"favourite" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"follow" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
_serde::export::Err(_serde::de::Error::unknown_variant(__value,
|
|
VARIANTS))
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"mention" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"reblog" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"favourite" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"follow" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
let __value =
|
|
&_serde::export::from_utf8_lossy(__value);
|
|
_serde::export::Err(_serde::de::Error::unknown_variant(__value,
|
|
VARIANTS))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<NotificationType>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = NotificationType;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"enum NotificationType")
|
|
}
|
|
fn visit_enum<__A>(self, __data: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::EnumAccess<'de> {
|
|
match match _serde::de::EnumAccess::variant(__data)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
(__Field::__field0, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(NotificationType::Mention)
|
|
}
|
|
(__Field::__field1, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(NotificationType::Reblog)
|
|
}
|
|
(__Field::__field2, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(NotificationType::Favourite)
|
|
}
|
|
(__Field::__field3, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(NotificationType::Follow)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
const VARIANTS: &'static [&'static str] =
|
|
&["mention", "reblog", "favourite", "follow"];
|
|
_serde::Deserializer::deserialize_enum(__deserializer,
|
|
"NotificationType",
|
|
VARIANTS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<NotificationType>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for NotificationType { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for NotificationType {
|
|
#[inline]
|
|
fn eq(&self, other: &NotificationType) -> bool {
|
|
{
|
|
let __self_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*self)
|
|
};
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) { _ => true, }
|
|
} else { false }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// Data structures for ser/de of push-subscription-related resources
|
|
pub mod push {
|
|
/// Represents the `alerts` key of the `Subscription` object
|
|
pub struct Alerts {
|
|
/// flag for follow alerts
|
|
pub follow: Option<bool>,
|
|
/// flag for favourite alerts
|
|
pub favourite: Option<bool>,
|
|
/// flag for reblog alerts
|
|
pub reblog: Option<bool>,
|
|
/// flag for mention alerts
|
|
pub mention: Option<bool>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Alerts {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Alerts {
|
|
follow: ref __self_0_0,
|
|
favourite: ref __self_0_1,
|
|
reblog: ref __self_0_2,
|
|
mention: ref __self_0_3 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Alerts");
|
|
let _ =
|
|
debug_trait_builder.field("follow",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("favourite",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("reblog",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("mention",
|
|
&&(*__self_0_3));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Alerts {
|
|
#[inline]
|
|
fn clone(&self) -> Alerts {
|
|
{
|
|
let _: ::core::clone::AssertParamIsClone<Option<bool>>;
|
|
let _: ::core::clone::AssertParamIsClone<Option<bool>>;
|
|
let _: ::core::clone::AssertParamIsClone<Option<bool>>;
|
|
let _: ::core::clone::AssertParamIsClone<Option<bool>>;
|
|
*self
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::marker::Copy for Alerts { }
|
|
impl ::core::marker::StructuralPartialEq for Alerts { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Alerts {
|
|
#[inline]
|
|
fn eq(&self, other: &Alerts) -> bool {
|
|
match *other {
|
|
Alerts {
|
|
follow: ref __self_1_0,
|
|
favourite: ref __self_1_1,
|
|
reblog: ref __self_1_2,
|
|
mention: ref __self_1_3 } =>
|
|
match *self {
|
|
Alerts {
|
|
follow: ref __self_0_0,
|
|
favourite: ref __self_0_1,
|
|
reblog: ref __self_0_2,
|
|
mention: ref __self_0_3 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Alerts) -> bool {
|
|
match *other {
|
|
Alerts {
|
|
follow: ref __self_1_0,
|
|
favourite: ref __self_1_1,
|
|
reblog: ref __self_1_2,
|
|
mention: ref __self_1_3 } =>
|
|
match *self {
|
|
Alerts {
|
|
follow: ref __self_0_0,
|
|
favourite: ref __self_0_1,
|
|
reblog: ref __self_0_2,
|
|
mention: ref __self_0_3 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Alerts: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for Alerts {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"Alerts",
|
|
false
|
|
as
|
|
usize
|
|
+ 1
|
|
+ 1
|
|
+ 1
|
|
+
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"follow",
|
|
&self.follow)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"favourite",
|
|
&self.favourite)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"reblog",
|
|
&self.reblog)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"mention",
|
|
&self.mention)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Alerts: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Alerts {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 4")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"follow" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"favourite" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"reblog" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"mention" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"follow" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"favourite" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"reblog" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"mention" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Alerts>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Alerts;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Alerts")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Alerts with 4 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Alerts with 4 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Alerts with 4 elements"));
|
|
}
|
|
};
|
|
let __field3 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
|
|
&"struct Alerts with 4 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Alerts{follow: __field0,
|
|
favourite: __field1,
|
|
reblog: __field2,
|
|
mention: __field3,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<Option<bool>> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<Option<bool>> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<Option<bool>> =
|
|
_serde::export::None;
|
|
let mut __field3:
|
|
_serde::export::Option<Option<bool>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("follow"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("favourite"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("reblog"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field3 => {
|
|
if _serde::export::Option::is_some(&__field3)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("mention"));
|
|
}
|
|
__field3 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("follow")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("favourite")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("reblog")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field3 =
|
|
match __field3 {
|
|
_serde::export::Some(__field3) =>
|
|
__field3,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("mention")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Alerts{follow: __field0,
|
|
favourite: __field1,
|
|
reblog: __field2,
|
|
mention: __field3,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["follow", "favourite", "reblog", "mention"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Alerts",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Alerts>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for Alerts {
|
|
#[inline]
|
|
fn default() -> Alerts {
|
|
Alerts{follow: ::core::default::Default::default(),
|
|
favourite: ::core::default::Default::default(),
|
|
reblog: ::core::default::Default::default(),
|
|
mention: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
/// Represents a new Push subscription
|
|
pub struct Subscription {
|
|
/// The `id` of the subscription
|
|
pub id: String,
|
|
/// The endpoint of the subscription
|
|
pub endpoint: String,
|
|
/// The server key of the subscription
|
|
pub server_key: String,
|
|
/// The status of the alerts for this subscription
|
|
pub alerts: Option<Alerts>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Subscription {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Subscription {
|
|
id: ref __self_0_0,
|
|
endpoint: ref __self_0_1,
|
|
server_key: ref __self_0_2,
|
|
alerts: ref __self_0_3 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Subscription");
|
|
let _ =
|
|
debug_trait_builder.field("id", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("endpoint",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("server_key",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("alerts",
|
|
&&(*__self_0_3));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Subscription {
|
|
#[inline]
|
|
fn clone(&self) -> Subscription {
|
|
match *self {
|
|
Subscription {
|
|
id: ref __self_0_0,
|
|
endpoint: ref __self_0_1,
|
|
server_key: ref __self_0_2,
|
|
alerts: ref __self_0_3 } =>
|
|
Subscription{id:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
endpoint:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
server_key:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
alerts:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for Subscription { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Subscription {
|
|
#[inline]
|
|
fn eq(&self, other: &Subscription) -> bool {
|
|
match *other {
|
|
Subscription {
|
|
id: ref __self_1_0,
|
|
endpoint: ref __self_1_1,
|
|
server_key: ref __self_1_2,
|
|
alerts: ref __self_1_3 } =>
|
|
match *self {
|
|
Subscription {
|
|
id: ref __self_0_0,
|
|
endpoint: ref __self_0_1,
|
|
server_key: ref __self_0_2,
|
|
alerts: ref __self_0_3 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Subscription) -> bool {
|
|
match *other {
|
|
Subscription {
|
|
id: ref __self_1_0,
|
|
endpoint: ref __self_1_1,
|
|
server_key: ref __self_1_2,
|
|
alerts: ref __self_1_3 } =>
|
|
match *self {
|
|
Subscription {
|
|
id: ref __self_0_0,
|
|
endpoint: ref __self_0_1,
|
|
server_key: ref __self_0_2,
|
|
alerts: ref __self_0_3 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Subscription: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Subscription {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 4")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"endpoint" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"server_key" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"alerts" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"endpoint" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"server_key" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"alerts" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Subscription>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Subscription;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Subscription")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Subscription with 4 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Subscription with 4 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Subscription with 4 elements"));
|
|
}
|
|
};
|
|
let __field3 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<Alerts>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
|
|
&"struct Subscription with 4 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Subscription{id: __field0,
|
|
endpoint:
|
|
__field1,
|
|
server_key:
|
|
__field2,
|
|
alerts:
|
|
__field3,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field3:
|
|
_serde::export::Option<Option<Alerts>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("id"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("endpoint"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("server_key"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field3 => {
|
|
if _serde::export::Option::is_some(&__field3)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("alerts"));
|
|
}
|
|
__field3 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Alerts>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("id")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("endpoint")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("server_key")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field3 =
|
|
match __field3 {
|
|
_serde::export::Some(__field3) =>
|
|
__field3,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("alerts")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Subscription{id: __field0,
|
|
endpoint:
|
|
__field1,
|
|
server_key:
|
|
__field2,
|
|
alerts:
|
|
__field3,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["id", "endpoint", "server_key", "alerts"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Subscription",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Subscription>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
pub(crate) mod add_subscription {
|
|
use super::Alerts;
|
|
pub(crate) struct Form {
|
|
pub(crate) subscription: Subscription,
|
|
pub(crate) data: Option<Data>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Form {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Form {
|
|
subscription: ref __self_0_0, data: ref __self_0_1 }
|
|
=> {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Form");
|
|
let _ =
|
|
debug_trait_builder.field("subscription",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("data",
|
|
&&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Form {
|
|
#[inline]
|
|
fn clone(&self) -> Form {
|
|
match *self {
|
|
Form {
|
|
subscription: ref __self_0_0, data: ref __self_0_1 }
|
|
=>
|
|
Form{subscription:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
data:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for Form { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Form {
|
|
#[inline]
|
|
fn eq(&self, other: &Form) -> bool {
|
|
match *other {
|
|
Form {
|
|
subscription: ref __self_1_0, data: ref __self_1_1 }
|
|
=>
|
|
match *self {
|
|
Form {
|
|
subscription: ref __self_0_0, data: ref __self_0_1
|
|
} =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Form) -> bool {
|
|
match *other {
|
|
Form {
|
|
subscription: ref __self_1_0, data: ref __self_1_1 }
|
|
=>
|
|
match *self {
|
|
Form {
|
|
subscription: ref __self_0_0, data: ref __self_0_1
|
|
} =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Form: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde
|
|
:: export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for Form {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"Form",
|
|
false
|
|
as
|
|
usize
|
|
+
|
|
1
|
|
+
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"subscription",
|
|
&self.subscription)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"data",
|
|
&self.data)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for Form {
|
|
#[inline]
|
|
fn default() -> Form {
|
|
Form{subscription: ::core::default::Default::default(),
|
|
data: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
pub(crate) struct Subscription {
|
|
pub(crate) endpoint: String,
|
|
pub(crate) keys: Keys,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Subscription {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Subscription {
|
|
endpoint: ref __self_0_0, keys: ref __self_0_1 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Subscription");
|
|
let _ =
|
|
debug_trait_builder.field("endpoint",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("keys",
|
|
&&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Subscription {
|
|
#[inline]
|
|
fn clone(&self) -> Subscription {
|
|
match *self {
|
|
Subscription {
|
|
endpoint: ref __self_0_0, keys: ref __self_0_1 } =>
|
|
Subscription{endpoint:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
keys:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for Subscription { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Subscription {
|
|
#[inline]
|
|
fn eq(&self, other: &Subscription) -> bool {
|
|
match *other {
|
|
Subscription {
|
|
endpoint: ref __self_1_0, keys: ref __self_1_1 } =>
|
|
match *self {
|
|
Subscription {
|
|
endpoint: ref __self_0_0, keys: ref __self_0_1 }
|
|
=>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Subscription) -> bool {
|
|
match *other {
|
|
Subscription {
|
|
endpoint: ref __self_1_0, keys: ref __self_1_1 } =>
|
|
match *self {
|
|
Subscription {
|
|
endpoint: ref __self_0_0, keys: ref __self_0_1 }
|
|
=>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Subscription: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde
|
|
:: export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for Subscription {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"Subscription",
|
|
false
|
|
as
|
|
usize
|
|
+
|
|
1
|
|
+
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"endpoint",
|
|
&self.endpoint)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"keys",
|
|
&self.keys)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for Subscription {
|
|
#[inline]
|
|
fn default() -> Subscription {
|
|
Subscription{endpoint:
|
|
::core::default::Default::default(),
|
|
keys: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
pub(crate) struct Keys {
|
|
pub(crate) p256dh: String,
|
|
pub(crate) auth: String,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Keys {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Keys { p256dh: ref __self_0_0, auth: ref __self_0_1 }
|
|
=> {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Keys");
|
|
let _ =
|
|
debug_trait_builder.field("p256dh",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("auth",
|
|
&&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Keys {
|
|
#[inline]
|
|
fn clone(&self) -> Keys {
|
|
match *self {
|
|
Keys { p256dh: ref __self_0_0, auth: ref __self_0_1 }
|
|
=>
|
|
Keys{p256dh:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
auth:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for Keys { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Keys {
|
|
#[inline]
|
|
fn eq(&self, other: &Keys) -> bool {
|
|
match *other {
|
|
Keys { p256dh: ref __self_1_0, auth: ref __self_1_1 }
|
|
=>
|
|
match *self {
|
|
Keys {
|
|
p256dh: ref __self_0_0, auth: ref __self_0_1 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Keys) -> bool {
|
|
match *other {
|
|
Keys { p256dh: ref __self_1_0, auth: ref __self_1_1 }
|
|
=>
|
|
match *self {
|
|
Keys {
|
|
p256dh: ref __self_0_0, auth: ref __self_0_1 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Keys: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde
|
|
:: export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for Keys {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"Keys",
|
|
false
|
|
as
|
|
usize
|
|
+
|
|
1
|
|
+
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"p256dh",
|
|
&self.p256dh)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"auth",
|
|
&self.auth)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for Keys {
|
|
#[inline]
|
|
fn default() -> Keys {
|
|
Keys{p256dh: ::core::default::Default::default(),
|
|
auth: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
pub(crate) struct Data {
|
|
pub(crate) alerts: Option<Alerts>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Data {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Data { alerts: ref __self_0_0 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Data");
|
|
let _ =
|
|
debug_trait_builder.field("alerts",
|
|
&&(*__self_0_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Data {
|
|
#[inline]
|
|
fn clone(&self) -> Data {
|
|
match *self {
|
|
Data { alerts: ref __self_0_0 } =>
|
|
Data{alerts:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for Data { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Data {
|
|
#[inline]
|
|
fn eq(&self, other: &Data) -> bool {
|
|
match *other {
|
|
Data { alerts: ref __self_1_0 } =>
|
|
match *self {
|
|
Data { alerts: ref __self_0_0 } =>
|
|
(*__self_0_0) == (*__self_1_0),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Data) -> bool {
|
|
match *other {
|
|
Data { alerts: ref __self_1_0 } =>
|
|
match *self {
|
|
Data { alerts: ref __self_0_0 } =>
|
|
(*__self_0_0) != (*__self_1_0),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Data: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde
|
|
:: export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for Data {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"Data",
|
|
false
|
|
as
|
|
usize
|
|
+
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"alerts",
|
|
&self.alerts)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for Data {
|
|
#[inline]
|
|
fn default() -> Data {
|
|
Data{alerts: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
}
|
|
pub(crate) mod update_data {
|
|
use super::Alerts;
|
|
pub(crate) struct Data {
|
|
pub(crate) alerts: Option<Alerts>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Data {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Data { alerts: ref __self_0_0 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Data");
|
|
let _ =
|
|
debug_trait_builder.field("alerts",
|
|
&&(*__self_0_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Data {
|
|
#[inline]
|
|
fn clone(&self) -> Data {
|
|
match *self {
|
|
Data { alerts: ref __self_0_0 } =>
|
|
Data{alerts:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for Data { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Data {
|
|
#[inline]
|
|
fn eq(&self, other: &Data) -> bool {
|
|
match *other {
|
|
Data { alerts: ref __self_1_0 } =>
|
|
match *self {
|
|
Data { alerts: ref __self_0_0 } =>
|
|
(*__self_0_0) == (*__self_1_0),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Data) -> bool {
|
|
match *other {
|
|
Data { alerts: ref __self_1_0 } =>
|
|
match *self {
|
|
Data { alerts: ref __self_0_0 } =>
|
|
(*__self_0_0) != (*__self_1_0),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Data: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde
|
|
:: export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for Data {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"Data",
|
|
false
|
|
as
|
|
usize
|
|
+
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"alerts",
|
|
&self.alerts)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for Data {
|
|
#[inline]
|
|
fn default() -> Data {
|
|
Data{alerts: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
pub(crate) struct Form {
|
|
pub(crate) id: String,
|
|
pub(crate) data: Data,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Form {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Form { id: ref __self_0_0, data: ref __self_0_1 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Form");
|
|
let _ =
|
|
debug_trait_builder.field("id",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("data",
|
|
&&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Form {
|
|
#[inline]
|
|
fn clone(&self) -> Form {
|
|
match *self {
|
|
Form { id: ref __self_0_0, data: ref __self_0_1 } =>
|
|
Form{id: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
data:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for Form { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Form {
|
|
#[inline]
|
|
fn eq(&self, other: &Form) -> bool {
|
|
match *other {
|
|
Form { id: ref __self_1_0, data: ref __self_1_1 } =>
|
|
match *self {
|
|
Form { id: ref __self_0_0, data: ref __self_0_1 }
|
|
=>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Form) -> bool {
|
|
match *other {
|
|
Form { id: ref __self_1_0, data: ref __self_1_1 } =>
|
|
match *self {
|
|
Form { id: ref __self_0_0, data: ref __self_0_1 }
|
|
=>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Form: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde
|
|
:: export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for Form {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"Form",
|
|
false
|
|
as
|
|
usize
|
|
+
|
|
1
|
|
+
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"id",
|
|
&self.id)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"data",
|
|
&self.data)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for Form {
|
|
#[inline]
|
|
fn default() -> Form {
|
|
Form{id: ::core::default::Default::default(),
|
|
data: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// Data structures for ser/de of relationship-related resources
|
|
pub mod relationship {
|
|
//! module containing everything relating to a relationship with
|
|
//! another account.
|
|
/// A struct containing information about a relationship with another account.
|
|
pub struct Relationship {
|
|
/// Target account id
|
|
pub id: String,
|
|
/// Whether the application client follows the account.
|
|
pub following: bool,
|
|
/// Whether the account follows the application client.
|
|
pub followed_by: bool,
|
|
/// Whether the application client blocks the account.
|
|
pub blocking: bool,
|
|
/// Whether the application client blocks the account.
|
|
pub muting: bool,
|
|
/// Whether the application client has requested to follow the account.
|
|
pub requested: bool,
|
|
/// Whether the user is also muting notifications
|
|
pub muting_notifications: bool,
|
|
/// Whether the user is currently blocking the accounts's domain
|
|
pub domain_blocking: bool,
|
|
/// Whether the user's reblogs will show up in the home timeline
|
|
pub showing_reblogs: bool,
|
|
/// Whether the user is currently endorsing the account
|
|
///
|
|
/// This field is not techincally nullable with mastodon >= 2.5.0, but
|
|
/// making it `Option<bool>` here means we shouldn't get deser errors when
|
|
/// making calls to pleroma or mastodon<2.5.0 instances
|
|
pub endorsed: Option<bool>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Relationship {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Relationship {
|
|
id: ref __self_0_0,
|
|
following: ref __self_0_1,
|
|
followed_by: ref __self_0_2,
|
|
blocking: ref __self_0_3,
|
|
muting: ref __self_0_4,
|
|
requested: ref __self_0_5,
|
|
muting_notifications: ref __self_0_6,
|
|
domain_blocking: ref __self_0_7,
|
|
showing_reblogs: ref __self_0_8,
|
|
endorsed: ref __self_0_9 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Relationship");
|
|
let _ =
|
|
debug_trait_builder.field("id", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("following",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("followed_by",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("blocking",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("muting",
|
|
&&(*__self_0_4));
|
|
let _ =
|
|
debug_trait_builder.field("requested",
|
|
&&(*__self_0_5));
|
|
let _ =
|
|
debug_trait_builder.field("muting_notifications",
|
|
&&(*__self_0_6));
|
|
let _ =
|
|
debug_trait_builder.field("domain_blocking",
|
|
&&(*__self_0_7));
|
|
let _ =
|
|
debug_trait_builder.field("showing_reblogs",
|
|
&&(*__self_0_8));
|
|
let _ =
|
|
debug_trait_builder.field("endorsed",
|
|
&&(*__self_0_9));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Relationship {
|
|
#[inline]
|
|
fn clone(&self) -> Relationship {
|
|
match *self {
|
|
Relationship {
|
|
id: ref __self_0_0,
|
|
following: ref __self_0_1,
|
|
followed_by: ref __self_0_2,
|
|
blocking: ref __self_0_3,
|
|
muting: ref __self_0_4,
|
|
requested: ref __self_0_5,
|
|
muting_notifications: ref __self_0_6,
|
|
domain_blocking: ref __self_0_7,
|
|
showing_reblogs: ref __self_0_8,
|
|
endorsed: ref __self_0_9 } =>
|
|
Relationship{id:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
following:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
followed_by:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
blocking:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
muting:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),
|
|
requested:
|
|
::core::clone::Clone::clone(&(*__self_0_5)),
|
|
muting_notifications:
|
|
::core::clone::Clone::clone(&(*__self_0_6)),
|
|
domain_blocking:
|
|
::core::clone::Clone::clone(&(*__self_0_7)),
|
|
showing_reblogs:
|
|
::core::clone::Clone::clone(&(*__self_0_8)),
|
|
endorsed:
|
|
::core::clone::Clone::clone(&(*__self_0_9)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Relationship: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Relationship {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
__field4,
|
|
__field5,
|
|
__field6,
|
|
__field7,
|
|
__field8,
|
|
__field9,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
4u64 =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
5u64 =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
6u64 =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
7u64 =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
8u64 =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
9u64 =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 10")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"following" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"followed_by" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"blocking" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
"muting" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
"requested" =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
"muting_notifications" =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
"domain_blocking" =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
"showing_reblogs" =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
"endorsed" =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"following" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"followed_by" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"blocking" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
b"muting" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
b"requested" =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
b"muting_notifications" =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
b"domain_blocking" =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
b"showing_reblogs" =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
b"endorsed" =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Relationship>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Relationship;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Relationship")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Relationship with 10 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Relationship with 10 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Relationship with 10 elements"));
|
|
}
|
|
};
|
|
let __field3 =
|
|
match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
|
|
&"struct Relationship with 10 elements"));
|
|
}
|
|
};
|
|
let __field4 =
|
|
match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
|
|
&"struct Relationship with 10 elements"));
|
|
}
|
|
};
|
|
let __field5 =
|
|
match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(5usize,
|
|
&"struct Relationship with 10 elements"));
|
|
}
|
|
};
|
|
let __field6 =
|
|
match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(6usize,
|
|
&"struct Relationship with 10 elements"));
|
|
}
|
|
};
|
|
let __field7 =
|
|
match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(7usize,
|
|
&"struct Relationship with 10 elements"));
|
|
}
|
|
};
|
|
let __field8 =
|
|
match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(8usize,
|
|
&"struct Relationship with 10 elements"));
|
|
}
|
|
};
|
|
let __field9 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(9usize,
|
|
&"struct Relationship with 10 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Relationship{id: __field0,
|
|
following:
|
|
__field1,
|
|
followed_by:
|
|
__field2,
|
|
blocking:
|
|
__field3,
|
|
muting:
|
|
__field4,
|
|
requested:
|
|
__field5,
|
|
muting_notifications:
|
|
__field6,
|
|
domain_blocking:
|
|
__field7,
|
|
showing_reblogs:
|
|
__field8,
|
|
endorsed:
|
|
__field9,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<bool> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<bool> =
|
|
_serde::export::None;
|
|
let mut __field3:
|
|
_serde::export::Option<bool> =
|
|
_serde::export::None;
|
|
let mut __field4:
|
|
_serde::export::Option<bool> =
|
|
_serde::export::None;
|
|
let mut __field5:
|
|
_serde::export::Option<bool> =
|
|
_serde::export::None;
|
|
let mut __field6:
|
|
_serde::export::Option<bool> =
|
|
_serde::export::None;
|
|
let mut __field7:
|
|
_serde::export::Option<bool> =
|
|
_serde::export::None;
|
|
let mut __field8:
|
|
_serde::export::Option<bool> =
|
|
_serde::export::None;
|
|
let mut __field9:
|
|
_serde::export::Option<Option<bool>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("id"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("following"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("followed_by"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field3 => {
|
|
if _serde::export::Option::is_some(&__field3)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("blocking"));
|
|
}
|
|
__field3 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field4 => {
|
|
if _serde::export::Option::is_some(&__field4)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("muting"));
|
|
}
|
|
__field4 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field5 => {
|
|
if _serde::export::Option::is_some(&__field5)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("requested"));
|
|
}
|
|
__field5 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field6 => {
|
|
if _serde::export::Option::is_some(&__field6)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("muting_notifications"));
|
|
}
|
|
__field6 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field7 => {
|
|
if _serde::export::Option::is_some(&__field7)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("domain_blocking"));
|
|
}
|
|
__field7 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field8 => {
|
|
if _serde::export::Option::is_some(&__field8)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("showing_reblogs"));
|
|
}
|
|
__field8 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field9 => {
|
|
if _serde::export::Option::is_some(&__field9)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("endorsed"));
|
|
}
|
|
__field9 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("id")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("following")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("followed_by")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field3 =
|
|
match __field3 {
|
|
_serde::export::Some(__field3) =>
|
|
__field3,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("blocking")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field4 =
|
|
match __field4 {
|
|
_serde::export::Some(__field4) =>
|
|
__field4,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("muting")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field5 =
|
|
match __field5 {
|
|
_serde::export::Some(__field5) =>
|
|
__field5,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("requested")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field6 =
|
|
match __field6 {
|
|
_serde::export::Some(__field6) =>
|
|
__field6,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("muting_notifications")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field7 =
|
|
match __field7 {
|
|
_serde::export::Some(__field7) =>
|
|
__field7,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("domain_blocking")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field8 =
|
|
match __field8 {
|
|
_serde::export::Some(__field8) =>
|
|
__field8,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("showing_reblogs")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field9 =
|
|
match __field9 {
|
|
_serde::export::Some(__field9) =>
|
|
__field9,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("endorsed")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Relationship{id: __field0,
|
|
following:
|
|
__field1,
|
|
followed_by:
|
|
__field2,
|
|
blocking:
|
|
__field3,
|
|
muting:
|
|
__field4,
|
|
requested:
|
|
__field5,
|
|
muting_notifications:
|
|
__field6,
|
|
domain_blocking:
|
|
__field7,
|
|
showing_reblogs:
|
|
__field8,
|
|
endorsed:
|
|
__field9,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["id", "following", "followed_by", "blocking",
|
|
"muting", "requested", "muting_notifications",
|
|
"domain_blocking", "showing_reblogs",
|
|
"endorsed"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Relationship",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Relationship>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Relationship { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Relationship {
|
|
#[inline]
|
|
fn eq(&self, other: &Relationship) -> bool {
|
|
match *other {
|
|
Relationship {
|
|
id: ref __self_1_0,
|
|
following: ref __self_1_1,
|
|
followed_by: ref __self_1_2,
|
|
blocking: ref __self_1_3,
|
|
muting: ref __self_1_4,
|
|
requested: ref __self_1_5,
|
|
muting_notifications: ref __self_1_6,
|
|
domain_blocking: ref __self_1_7,
|
|
showing_reblogs: ref __self_1_8,
|
|
endorsed: ref __self_1_9 } =>
|
|
match *self {
|
|
Relationship {
|
|
id: ref __self_0_0,
|
|
following: ref __self_0_1,
|
|
followed_by: ref __self_0_2,
|
|
blocking: ref __self_0_3,
|
|
muting: ref __self_0_4,
|
|
requested: ref __self_0_5,
|
|
muting_notifications: ref __self_0_6,
|
|
domain_blocking: ref __self_0_7,
|
|
showing_reblogs: ref __self_0_8,
|
|
endorsed: ref __self_0_9 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4) &&
|
|
(*__self_0_5) == (*__self_1_5) &&
|
|
(*__self_0_6) == (*__self_1_6) &&
|
|
(*__self_0_7) == (*__self_1_7) &&
|
|
(*__self_0_8) == (*__self_1_8) &&
|
|
(*__self_0_9) == (*__self_1_9),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Relationship) -> bool {
|
|
match *other {
|
|
Relationship {
|
|
id: ref __self_1_0,
|
|
following: ref __self_1_1,
|
|
followed_by: ref __self_1_2,
|
|
blocking: ref __self_1_3,
|
|
muting: ref __self_1_4,
|
|
requested: ref __self_1_5,
|
|
muting_notifications: ref __self_1_6,
|
|
domain_blocking: ref __self_1_7,
|
|
showing_reblogs: ref __self_1_8,
|
|
endorsed: ref __self_1_9 } =>
|
|
match *self {
|
|
Relationship {
|
|
id: ref __self_0_0,
|
|
following: ref __self_0_1,
|
|
followed_by: ref __self_0_2,
|
|
blocking: ref __self_0_3,
|
|
muting: ref __self_0_4,
|
|
requested: ref __self_0_5,
|
|
muting_notifications: ref __self_0_6,
|
|
domain_blocking: ref __self_0_7,
|
|
showing_reblogs: ref __self_0_8,
|
|
endorsed: ref __self_0_9 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4) ||
|
|
(*__self_0_5) != (*__self_1_5) ||
|
|
(*__self_0_6) != (*__self_1_6) ||
|
|
(*__self_0_7) != (*__self_1_7) ||
|
|
(*__self_0_8) != (*__self_1_8) ||
|
|
(*__self_0_9) != (*__self_1_9),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// Data structures for ser/de of report-related resources
|
|
pub mod report {
|
|
//! module containing information about a finished report of a user.
|
|
/// A struct containing info about a report.
|
|
pub struct Report {
|
|
/// The ID of the report.
|
|
pub id: String,
|
|
/// The action taken in response to the report.
|
|
pub action_taken: String,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Report {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Report { id: ref __self_0_0, action_taken: ref __self_0_1
|
|
} => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Report");
|
|
let _ =
|
|
debug_trait_builder.field("id", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("action_taken",
|
|
&&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Report {
|
|
#[inline]
|
|
fn clone(&self) -> Report {
|
|
match *self {
|
|
Report { id: ref __self_0_0, action_taken: ref __self_0_1
|
|
} =>
|
|
Report{id: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
action_taken:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Report: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Report {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field { __field0, __field1, __ignore, }
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 2")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"action_taken" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"action_taken" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Report>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Report;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Report")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Report with 2 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Report with 2 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Report{id: __field0,
|
|
action_taken:
|
|
__field1,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("id"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("action_taken"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("id")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("action_taken")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Report{id: __field0,
|
|
action_taken:
|
|
__field1,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["id", "action_taken"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Report",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Report>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Report { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Report {
|
|
#[inline]
|
|
fn eq(&self, other: &Report) -> bool {
|
|
match *other {
|
|
Report { id: ref __self_1_0, action_taken: ref __self_1_1
|
|
} =>
|
|
match *self {
|
|
Report {
|
|
id: ref __self_0_0, action_taken: ref __self_0_1 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Report) -> bool {
|
|
match *other {
|
|
Report { id: ref __self_1_0, action_taken: ref __self_1_1
|
|
} =>
|
|
match *self {
|
|
Report {
|
|
id: ref __self_0_0, action_taken: ref __self_0_1 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// Data structures for ser/de of search-related resources
|
|
pub mod search_result {
|
|
//! A module containing info relating to a search result.
|
|
use super::{prelude::{Account, Status}, status::Tag};
|
|
/// A struct containing results of a search.
|
|
pub struct SearchResult {
|
|
/// An array of matched Accounts.
|
|
pub accounts: Vec<Account>,
|
|
/// An array of matched Statuses.
|
|
pub statuses: Vec<Status>,
|
|
/// An array of matched hashtags, as strings.
|
|
pub hashtags: Vec<String>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for SearchResult {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
SearchResult {
|
|
accounts: ref __self_0_0,
|
|
statuses: ref __self_0_1,
|
|
hashtags: ref __self_0_2 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("SearchResult");
|
|
let _ =
|
|
debug_trait_builder.field("accounts",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("statuses",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("hashtags",
|
|
&&(*__self_0_2));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for SearchResult {
|
|
#[inline]
|
|
fn clone(&self) -> SearchResult {
|
|
match *self {
|
|
SearchResult {
|
|
accounts: ref __self_0_0,
|
|
statuses: ref __self_0_1,
|
|
hashtags: ref __self_0_2 } =>
|
|
SearchResult{accounts:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
statuses:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
hashtags:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_SearchResult: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for SearchResult {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 3")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"accounts" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"statuses" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"hashtags" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"accounts" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"statuses" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"hashtags" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<SearchResult>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = SearchResult;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct SearchResult")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<Vec<Account>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct SearchResult with 3 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<Vec<Status>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct SearchResult with 3 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<Vec<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct SearchResult with 3 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(SearchResult{accounts:
|
|
__field0,
|
|
statuses:
|
|
__field1,
|
|
hashtags:
|
|
__field2,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<Vec<Account>> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<Vec<Status>> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<Vec<String>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("accounts"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Account>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("statuses"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Status>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("hashtags"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("accounts")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("statuses")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("hashtags")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(SearchResult{accounts:
|
|
__field0,
|
|
statuses:
|
|
__field1,
|
|
hashtags:
|
|
__field2,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["accounts", "statuses", "hashtags"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"SearchResult",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<SearchResult>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for SearchResult { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for SearchResult {
|
|
#[inline]
|
|
fn eq(&self, other: &SearchResult) -> bool {
|
|
match *other {
|
|
SearchResult {
|
|
accounts: ref __self_1_0,
|
|
statuses: ref __self_1_1,
|
|
hashtags: ref __self_1_2 } =>
|
|
match *self {
|
|
SearchResult {
|
|
accounts: ref __self_0_0,
|
|
statuses: ref __self_0_1,
|
|
hashtags: ref __self_0_2 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &SearchResult) -> bool {
|
|
match *other {
|
|
SearchResult {
|
|
accounts: ref __self_1_0,
|
|
statuses: ref __self_1_1,
|
|
hashtags: ref __self_1_2 } =>
|
|
match *self {
|
|
SearchResult {
|
|
accounts: ref __self_0_0,
|
|
statuses: ref __self_0_1,
|
|
hashtags: ref __self_0_2 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
/// A struct containing results of a search, with `Tag` objects in the
|
|
/// `hashtags` field
|
|
pub struct SearchResultV2 {
|
|
/// An array of matched Accounts.
|
|
pub accounts: Vec<Account>,
|
|
/// An array of matched Statuses.
|
|
pub statuses: Vec<Status>,
|
|
/// An array of matched hashtags, as `Tag` objects.
|
|
pub hashtags: Vec<Tag>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for SearchResultV2 {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
SearchResultV2 {
|
|
accounts: ref __self_0_0,
|
|
statuses: ref __self_0_1,
|
|
hashtags: ref __self_0_2 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("SearchResultV2");
|
|
let _ =
|
|
debug_trait_builder.field("accounts",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("statuses",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("hashtags",
|
|
&&(*__self_0_2));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for SearchResultV2 {
|
|
#[inline]
|
|
fn clone(&self) -> SearchResultV2 {
|
|
match *self {
|
|
SearchResultV2 {
|
|
accounts: ref __self_0_0,
|
|
statuses: ref __self_0_1,
|
|
hashtags: ref __self_0_2 } =>
|
|
SearchResultV2{accounts:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
statuses:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
hashtags:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_SearchResultV2: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for SearchResultV2 {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 3")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"accounts" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"statuses" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"hashtags" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"accounts" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"statuses" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"hashtags" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<SearchResultV2>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = SearchResultV2;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct SearchResultV2")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<Vec<Account>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct SearchResultV2 with 3 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<Vec<Status>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct SearchResultV2 with 3 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<Vec<Tag>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct SearchResultV2 with 3 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(SearchResultV2{accounts:
|
|
__field0,
|
|
statuses:
|
|
__field1,
|
|
hashtags:
|
|
__field2,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<Vec<Account>> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<Vec<Status>> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<Vec<Tag>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("accounts"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Account>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("statuses"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Status>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("hashtags"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Tag>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("accounts")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("statuses")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("hashtags")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(SearchResultV2{accounts:
|
|
__field0,
|
|
statuses:
|
|
__field1,
|
|
hashtags:
|
|
__field2,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["accounts", "statuses", "hashtags"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"SearchResultV2",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<SearchResultV2>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for SearchResultV2 { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for SearchResultV2 {
|
|
#[inline]
|
|
fn eq(&self, other: &SearchResultV2) -> bool {
|
|
match *other {
|
|
SearchResultV2 {
|
|
accounts: ref __self_1_0,
|
|
statuses: ref __self_1_1,
|
|
hashtags: ref __self_1_2 } =>
|
|
match *self {
|
|
SearchResultV2 {
|
|
accounts: ref __self_0_0,
|
|
statuses: ref __self_0_1,
|
|
hashtags: ref __self_0_2 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &SearchResultV2) -> bool {
|
|
match *other {
|
|
SearchResultV2 {
|
|
accounts: ref __self_1_0,
|
|
statuses: ref __self_1_1,
|
|
hashtags: ref __self_1_2 } =>
|
|
match *self {
|
|
SearchResultV2 {
|
|
accounts: ref __self_0_0,
|
|
statuses: ref __self_0_1,
|
|
hashtags: ref __self_0_2 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// Data structures for ser/de of status-related resources
|
|
pub mod status {
|
|
//! Module containing all info relating to a status.
|
|
use super::prelude::*;
|
|
use chrono::prelude::*;
|
|
use crate::entities::card::Card;
|
|
use crate::status_builder::Visibility;
|
|
/// A status from the instance.
|
|
pub struct Status {
|
|
/// The ID of the status.
|
|
pub id: String,
|
|
/// A Fediverse-unique resource ID.
|
|
pub uri: String,
|
|
/// URL to the status page (can be remote)
|
|
pub url: Option<String>,
|
|
/// The Account which posted the status.
|
|
pub account: Account,
|
|
/// The ID of the status this status is replying to, if the status is
|
|
/// a reply.
|
|
pub in_reply_to_id: Option<String>,
|
|
/// The ID of the account this status is replying to, if the status is
|
|
/// a reply.
|
|
pub in_reply_to_account_id: Option<String>,
|
|
/// If this status is a reblogged Status of another User.
|
|
pub reblog: Option<Box<Status>>,
|
|
/// Body of the status; this will contain HTML
|
|
/// (remote HTML already sanitized)
|
|
pub content: String,
|
|
/// The time the status was created.
|
|
pub created_at: DateTime<Utc>,
|
|
/// An array of Emoji
|
|
pub emojis: Vec<Emoji>,
|
|
/// The numbef or replies to this status.
|
|
pub replies_count: Option<u64>,
|
|
/// The number of reblogs for the status.
|
|
pub reblogs_count: u64,
|
|
/// The number of favourites for the status.
|
|
pub favourites_count: u64,
|
|
/// Whether the application client has reblogged the status.
|
|
pub reblogged: Option<bool>,
|
|
/// Whether the application client has favourited the status.
|
|
pub favourited: Option<bool>,
|
|
/// Whether media attachments should be hidden by default.
|
|
pub sensitive: bool,
|
|
/// If not empty, warning text that should be displayed before the actual
|
|
/// content.
|
|
pub spoiler_text: String,
|
|
/// The visibilty of the status.
|
|
pub visibility: Visibility,
|
|
/// An array of attachments.
|
|
pub media_attachments: Vec<Attachment>,
|
|
/// An array of mentions.
|
|
pub mentions: Vec<Mention>,
|
|
/// An array of tags.
|
|
pub tags: Vec<Tag>,
|
|
/// The associated card
|
|
pub card: Option<Card>,
|
|
/// Name of application used to post status.
|
|
pub application: Option<Application>,
|
|
/// The detected language for the status, if detected.
|
|
pub language: Option<String>,
|
|
/// Whether this is the pinned status for the account that posted it.
|
|
pub pinned: Option<bool>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Status {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Status {
|
|
id: ref __self_0_0,
|
|
uri: ref __self_0_1,
|
|
url: ref __self_0_2,
|
|
account: ref __self_0_3,
|
|
in_reply_to_id: ref __self_0_4,
|
|
in_reply_to_account_id: ref __self_0_5,
|
|
reblog: ref __self_0_6,
|
|
content: ref __self_0_7,
|
|
created_at: ref __self_0_8,
|
|
emojis: ref __self_0_9,
|
|
replies_count: ref __self_0_10,
|
|
reblogs_count: ref __self_0_11,
|
|
favourites_count: ref __self_0_12,
|
|
reblogged: ref __self_0_13,
|
|
favourited: ref __self_0_14,
|
|
sensitive: ref __self_0_15,
|
|
spoiler_text: ref __self_0_16,
|
|
visibility: ref __self_0_17,
|
|
media_attachments: ref __self_0_18,
|
|
mentions: ref __self_0_19,
|
|
tags: ref __self_0_20,
|
|
card: ref __self_0_21,
|
|
application: ref __self_0_22,
|
|
language: ref __self_0_23,
|
|
pinned: ref __self_0_24 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Status");
|
|
let _ =
|
|
debug_trait_builder.field("id", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("uri", &&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("url", &&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("account",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("in_reply_to_id",
|
|
&&(*__self_0_4));
|
|
let _ =
|
|
debug_trait_builder.field("in_reply_to_account_id",
|
|
&&(*__self_0_5));
|
|
let _ =
|
|
debug_trait_builder.field("reblog",
|
|
&&(*__self_0_6));
|
|
let _ =
|
|
debug_trait_builder.field("content",
|
|
&&(*__self_0_7));
|
|
let _ =
|
|
debug_trait_builder.field("created_at",
|
|
&&(*__self_0_8));
|
|
let _ =
|
|
debug_trait_builder.field("emojis",
|
|
&&(*__self_0_9));
|
|
let _ =
|
|
debug_trait_builder.field("replies_count",
|
|
&&(*__self_0_10));
|
|
let _ =
|
|
debug_trait_builder.field("reblogs_count",
|
|
&&(*__self_0_11));
|
|
let _ =
|
|
debug_trait_builder.field("favourites_count",
|
|
&&(*__self_0_12));
|
|
let _ =
|
|
debug_trait_builder.field("reblogged",
|
|
&&(*__self_0_13));
|
|
let _ =
|
|
debug_trait_builder.field("favourited",
|
|
&&(*__self_0_14));
|
|
let _ =
|
|
debug_trait_builder.field("sensitive",
|
|
&&(*__self_0_15));
|
|
let _ =
|
|
debug_trait_builder.field("spoiler_text",
|
|
&&(*__self_0_16));
|
|
let _ =
|
|
debug_trait_builder.field("visibility",
|
|
&&(*__self_0_17));
|
|
let _ =
|
|
debug_trait_builder.field("media_attachments",
|
|
&&(*__self_0_18));
|
|
let _ =
|
|
debug_trait_builder.field("mentions",
|
|
&&(*__self_0_19));
|
|
let _ =
|
|
debug_trait_builder.field("tags",
|
|
&&(*__self_0_20));
|
|
let _ =
|
|
debug_trait_builder.field("card",
|
|
&&(*__self_0_21));
|
|
let _ =
|
|
debug_trait_builder.field("application",
|
|
&&(*__self_0_22));
|
|
let _ =
|
|
debug_trait_builder.field("language",
|
|
&&(*__self_0_23));
|
|
let _ =
|
|
debug_trait_builder.field("pinned",
|
|
&&(*__self_0_24));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Status {
|
|
#[inline]
|
|
fn clone(&self) -> Status {
|
|
match *self {
|
|
Status {
|
|
id: ref __self_0_0,
|
|
uri: ref __self_0_1,
|
|
url: ref __self_0_2,
|
|
account: ref __self_0_3,
|
|
in_reply_to_id: ref __self_0_4,
|
|
in_reply_to_account_id: ref __self_0_5,
|
|
reblog: ref __self_0_6,
|
|
content: ref __self_0_7,
|
|
created_at: ref __self_0_8,
|
|
emojis: ref __self_0_9,
|
|
replies_count: ref __self_0_10,
|
|
reblogs_count: ref __self_0_11,
|
|
favourites_count: ref __self_0_12,
|
|
reblogged: ref __self_0_13,
|
|
favourited: ref __self_0_14,
|
|
sensitive: ref __self_0_15,
|
|
spoiler_text: ref __self_0_16,
|
|
visibility: ref __self_0_17,
|
|
media_attachments: ref __self_0_18,
|
|
mentions: ref __self_0_19,
|
|
tags: ref __self_0_20,
|
|
card: ref __self_0_21,
|
|
application: ref __self_0_22,
|
|
language: ref __self_0_23,
|
|
pinned: ref __self_0_24 } =>
|
|
Status{id: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
uri: ::core::clone::Clone::clone(&(*__self_0_1)),
|
|
url: ::core::clone::Clone::clone(&(*__self_0_2)),
|
|
account:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
in_reply_to_id:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),
|
|
in_reply_to_account_id:
|
|
::core::clone::Clone::clone(&(*__self_0_5)),
|
|
reblog:
|
|
::core::clone::Clone::clone(&(*__self_0_6)),
|
|
content:
|
|
::core::clone::Clone::clone(&(*__self_0_7)),
|
|
created_at:
|
|
::core::clone::Clone::clone(&(*__self_0_8)),
|
|
emojis:
|
|
::core::clone::Clone::clone(&(*__self_0_9)),
|
|
replies_count:
|
|
::core::clone::Clone::clone(&(*__self_0_10)),
|
|
reblogs_count:
|
|
::core::clone::Clone::clone(&(*__self_0_11)),
|
|
favourites_count:
|
|
::core::clone::Clone::clone(&(*__self_0_12)),
|
|
reblogged:
|
|
::core::clone::Clone::clone(&(*__self_0_13)),
|
|
favourited:
|
|
::core::clone::Clone::clone(&(*__self_0_14)),
|
|
sensitive:
|
|
::core::clone::Clone::clone(&(*__self_0_15)),
|
|
spoiler_text:
|
|
::core::clone::Clone::clone(&(*__self_0_16)),
|
|
visibility:
|
|
::core::clone::Clone::clone(&(*__self_0_17)),
|
|
media_attachments:
|
|
::core::clone::Clone::clone(&(*__self_0_18)),
|
|
mentions:
|
|
::core::clone::Clone::clone(&(*__self_0_19)),
|
|
tags: ::core::clone::Clone::clone(&(*__self_0_20)),
|
|
card: ::core::clone::Clone::clone(&(*__self_0_21)),
|
|
application:
|
|
::core::clone::Clone::clone(&(*__self_0_22)),
|
|
language:
|
|
::core::clone::Clone::clone(&(*__self_0_23)),
|
|
pinned:
|
|
::core::clone::Clone::clone(&(*__self_0_24)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Status: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Status {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
__field4,
|
|
__field5,
|
|
__field6,
|
|
__field7,
|
|
__field8,
|
|
__field9,
|
|
__field10,
|
|
__field11,
|
|
__field12,
|
|
__field13,
|
|
__field14,
|
|
__field15,
|
|
__field16,
|
|
__field17,
|
|
__field18,
|
|
__field19,
|
|
__field20,
|
|
__field21,
|
|
__field22,
|
|
__field23,
|
|
__field24,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
4u64 =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
5u64 =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
6u64 =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
7u64 =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
8u64 =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
9u64 =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
10u64 =>
|
|
_serde::export::Ok(__Field::__field10),
|
|
11u64 =>
|
|
_serde::export::Ok(__Field::__field11),
|
|
12u64 =>
|
|
_serde::export::Ok(__Field::__field12),
|
|
13u64 =>
|
|
_serde::export::Ok(__Field::__field13),
|
|
14u64 =>
|
|
_serde::export::Ok(__Field::__field14),
|
|
15u64 =>
|
|
_serde::export::Ok(__Field::__field15),
|
|
16u64 =>
|
|
_serde::export::Ok(__Field::__field16),
|
|
17u64 =>
|
|
_serde::export::Ok(__Field::__field17),
|
|
18u64 =>
|
|
_serde::export::Ok(__Field::__field18),
|
|
19u64 =>
|
|
_serde::export::Ok(__Field::__field19),
|
|
20u64 =>
|
|
_serde::export::Ok(__Field::__field20),
|
|
21u64 =>
|
|
_serde::export::Ok(__Field::__field21),
|
|
22u64 =>
|
|
_serde::export::Ok(__Field::__field22),
|
|
23u64 =>
|
|
_serde::export::Ok(__Field::__field23),
|
|
24u64 =>
|
|
_serde::export::Ok(__Field::__field24),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 25")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"uri" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"url" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"account" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
"in_reply_to_id" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
"in_reply_to_account_id" =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
"reblog" =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
"content" =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
"created_at" =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
"emojis" =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
"replies_count" =>
|
|
_serde::export::Ok(__Field::__field10),
|
|
"reblogs_count" =>
|
|
_serde::export::Ok(__Field::__field11),
|
|
"favourites_count" =>
|
|
_serde::export::Ok(__Field::__field12),
|
|
"reblogged" =>
|
|
_serde::export::Ok(__Field::__field13),
|
|
"favourited" =>
|
|
_serde::export::Ok(__Field::__field14),
|
|
"sensitive" =>
|
|
_serde::export::Ok(__Field::__field15),
|
|
"spoiler_text" =>
|
|
_serde::export::Ok(__Field::__field16),
|
|
"visibility" =>
|
|
_serde::export::Ok(__Field::__field17),
|
|
"media_attachments" =>
|
|
_serde::export::Ok(__Field::__field18),
|
|
"mentions" =>
|
|
_serde::export::Ok(__Field::__field19),
|
|
"tags" =>
|
|
_serde::export::Ok(__Field::__field20),
|
|
"card" =>
|
|
_serde::export::Ok(__Field::__field21),
|
|
"application" =>
|
|
_serde::export::Ok(__Field::__field22),
|
|
"language" =>
|
|
_serde::export::Ok(__Field::__field23),
|
|
"pinned" =>
|
|
_serde::export::Ok(__Field::__field24),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"uri" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"url" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"account" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
b"in_reply_to_id" =>
|
|
_serde::export::Ok(__Field::__field4),
|
|
b"in_reply_to_account_id" =>
|
|
_serde::export::Ok(__Field::__field5),
|
|
b"reblog" =>
|
|
_serde::export::Ok(__Field::__field6),
|
|
b"content" =>
|
|
_serde::export::Ok(__Field::__field7),
|
|
b"created_at" =>
|
|
_serde::export::Ok(__Field::__field8),
|
|
b"emojis" =>
|
|
_serde::export::Ok(__Field::__field9),
|
|
b"replies_count" =>
|
|
_serde::export::Ok(__Field::__field10),
|
|
b"reblogs_count" =>
|
|
_serde::export::Ok(__Field::__field11),
|
|
b"favourites_count" =>
|
|
_serde::export::Ok(__Field::__field12),
|
|
b"reblogged" =>
|
|
_serde::export::Ok(__Field::__field13),
|
|
b"favourited" =>
|
|
_serde::export::Ok(__Field::__field14),
|
|
b"sensitive" =>
|
|
_serde::export::Ok(__Field::__field15),
|
|
b"spoiler_text" =>
|
|
_serde::export::Ok(__Field::__field16),
|
|
b"visibility" =>
|
|
_serde::export::Ok(__Field::__field17),
|
|
b"media_attachments" =>
|
|
_serde::export::Ok(__Field::__field18),
|
|
b"mentions" =>
|
|
_serde::export::Ok(__Field::__field19),
|
|
b"tags" =>
|
|
_serde::export::Ok(__Field::__field20),
|
|
b"card" =>
|
|
_serde::export::Ok(__Field::__field21),
|
|
b"application" =>
|
|
_serde::export::Ok(__Field::__field22),
|
|
b"language" =>
|
|
_serde::export::Ok(__Field::__field23),
|
|
b"pinned" =>
|
|
_serde::export::Ok(__Field::__field24),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Status>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Status;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Status")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field3 =
|
|
match match _serde::de::SeqAccess::next_element::<Account>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field4 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field5 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(5usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field6 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<Box<Status>>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(6usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field7 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(7usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field8 =
|
|
match match _serde::de::SeqAccess::next_element::<DateTime<Utc>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(8usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field9 =
|
|
match match _serde::de::SeqAccess::next_element::<Vec<Emoji>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(9usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field10 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<u64>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(10usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field11 =
|
|
match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(11usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field12 =
|
|
match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(12usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field13 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(13usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field14 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(14usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field15 =
|
|
match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(15usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field16 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(16usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field17 =
|
|
match match _serde::de::SeqAccess::next_element::<Visibility>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(17usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field18 =
|
|
match match _serde::de::SeqAccess::next_element::<Vec<Attachment>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(18usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field19 =
|
|
match match _serde::de::SeqAccess::next_element::<Vec<Mention>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(19usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field20 =
|
|
match match _serde::de::SeqAccess::next_element::<Vec<Tag>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(20usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field21 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<Card>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(21usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field22 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<Application>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(22usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field23 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(23usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
let __field24 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(24usize,
|
|
&"struct Status with 25 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Status{id: __field0,
|
|
uri: __field1,
|
|
url: __field2,
|
|
account: __field3,
|
|
in_reply_to_id:
|
|
__field4,
|
|
in_reply_to_account_id:
|
|
__field5,
|
|
reblog: __field6,
|
|
content: __field7,
|
|
created_at:
|
|
__field8,
|
|
emojis: __field9,
|
|
replies_count:
|
|
__field10,
|
|
reblogs_count:
|
|
__field11,
|
|
favourites_count:
|
|
__field12,
|
|
reblogged:
|
|
__field13,
|
|
favourited:
|
|
__field14,
|
|
sensitive:
|
|
__field15,
|
|
spoiler_text:
|
|
__field16,
|
|
visibility:
|
|
__field17,
|
|
media_attachments:
|
|
__field18,
|
|
mentions: __field19,
|
|
tags: __field20,
|
|
card: __field21,
|
|
application:
|
|
__field22,
|
|
language: __field23,
|
|
pinned: __field24,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field3:
|
|
_serde::export::Option<Account> =
|
|
_serde::export::None;
|
|
let mut __field4:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field5:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field6:
|
|
_serde::export::Option<Option<Box<Status>>> =
|
|
_serde::export::None;
|
|
let mut __field7:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field8:
|
|
_serde::export::Option<DateTime<Utc>> =
|
|
_serde::export::None;
|
|
let mut __field9:
|
|
_serde::export::Option<Vec<Emoji>> =
|
|
_serde::export::None;
|
|
let mut __field10:
|
|
_serde::export::Option<Option<u64>> =
|
|
_serde::export::None;
|
|
let mut __field11:
|
|
_serde::export::Option<u64> =
|
|
_serde::export::None;
|
|
let mut __field12:
|
|
_serde::export::Option<u64> =
|
|
_serde::export::None;
|
|
let mut __field13:
|
|
_serde::export::Option<Option<bool>> =
|
|
_serde::export::None;
|
|
let mut __field14:
|
|
_serde::export::Option<Option<bool>> =
|
|
_serde::export::None;
|
|
let mut __field15:
|
|
_serde::export::Option<bool> =
|
|
_serde::export::None;
|
|
let mut __field16:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field17:
|
|
_serde::export::Option<Visibility> =
|
|
_serde::export::None;
|
|
let mut __field18:
|
|
_serde::export::Option<Vec<Attachment>> =
|
|
_serde::export::None;
|
|
let mut __field19:
|
|
_serde::export::Option<Vec<Mention>> =
|
|
_serde::export::None;
|
|
let mut __field20:
|
|
_serde::export::Option<Vec<Tag>> =
|
|
_serde::export::None;
|
|
let mut __field21:
|
|
_serde::export::Option<Option<Card>> =
|
|
_serde::export::None;
|
|
let mut __field22:
|
|
_serde::export::Option<Option<Application>> =
|
|
_serde::export::None;
|
|
let mut __field23:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field24:
|
|
_serde::export::Option<Option<bool>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("id"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("uri"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("url"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field3 => {
|
|
if _serde::export::Option::is_some(&__field3)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("account"));
|
|
}
|
|
__field3 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Account>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field4 => {
|
|
if _serde::export::Option::is_some(&__field4)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("in_reply_to_id"));
|
|
}
|
|
__field4 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field5 => {
|
|
if _serde::export::Option::is_some(&__field5)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("in_reply_to_account_id"));
|
|
}
|
|
__field5 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field6 => {
|
|
if _serde::export::Option::is_some(&__field6)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("reblog"));
|
|
}
|
|
__field6 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Box<Status>>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field7 => {
|
|
if _serde::export::Option::is_some(&__field7)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("content"));
|
|
}
|
|
__field7 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field8 => {
|
|
if _serde::export::Option::is_some(&__field8)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("created_at"));
|
|
}
|
|
__field8 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<DateTime<Utc>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field9 => {
|
|
if _serde::export::Option::is_some(&__field9)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("emojis"));
|
|
}
|
|
__field9 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Emoji>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field10 => {
|
|
if _serde::export::Option::is_some(&__field10)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("replies_count"));
|
|
}
|
|
__field10 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<u64>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field11 => {
|
|
if _serde::export::Option::is_some(&__field11)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("reblogs_count"));
|
|
}
|
|
__field11 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field12 => {
|
|
if _serde::export::Option::is_some(&__field12)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("favourites_count"));
|
|
}
|
|
__field12 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field13 => {
|
|
if _serde::export::Option::is_some(&__field13)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("reblogged"));
|
|
}
|
|
__field13 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field14 => {
|
|
if _serde::export::Option::is_some(&__field14)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("favourited"));
|
|
}
|
|
__field14 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field15 => {
|
|
if _serde::export::Option::is_some(&__field15)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("sensitive"));
|
|
}
|
|
__field15 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field16 => {
|
|
if _serde::export::Option::is_some(&__field16)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("spoiler_text"));
|
|
}
|
|
__field16 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field17 => {
|
|
if _serde::export::Option::is_some(&__field17)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("visibility"));
|
|
}
|
|
__field17 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Visibility>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field18 => {
|
|
if _serde::export::Option::is_some(&__field18)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("media_attachments"));
|
|
}
|
|
__field18 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Attachment>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field19 => {
|
|
if _serde::export::Option::is_some(&__field19)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("mentions"));
|
|
}
|
|
__field19 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Mention>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field20 => {
|
|
if _serde::export::Option::is_some(&__field20)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("tags"));
|
|
}
|
|
__field20 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Tag>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field21 => {
|
|
if _serde::export::Option::is_some(&__field21)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("card"));
|
|
}
|
|
__field21 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Card>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field22 => {
|
|
if _serde::export::Option::is_some(&__field22)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("application"));
|
|
}
|
|
__field22 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Application>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field23 => {
|
|
if _serde::export::Option::is_some(&__field23)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("language"));
|
|
}
|
|
__field23 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field24 => {
|
|
if _serde::export::Option::is_some(&__field24)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("pinned"));
|
|
}
|
|
__field24 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("id")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("uri")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("url")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field3 =
|
|
match __field3 {
|
|
_serde::export::Some(__field3) =>
|
|
__field3,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("account")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field4 =
|
|
match __field4 {
|
|
_serde::export::Some(__field4) =>
|
|
__field4,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("in_reply_to_id")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field5 =
|
|
match __field5 {
|
|
_serde::export::Some(__field5) =>
|
|
__field5,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("in_reply_to_account_id")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field6 =
|
|
match __field6 {
|
|
_serde::export::Some(__field6) =>
|
|
__field6,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("reblog")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field7 =
|
|
match __field7 {
|
|
_serde::export::Some(__field7) =>
|
|
__field7,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("content")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field8 =
|
|
match __field8 {
|
|
_serde::export::Some(__field8) =>
|
|
__field8,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("created_at")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field9 =
|
|
match __field9 {
|
|
_serde::export::Some(__field9) =>
|
|
__field9,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("emojis")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field10 =
|
|
match __field10 {
|
|
_serde::export::Some(__field10) =>
|
|
__field10,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("replies_count")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field11 =
|
|
match __field11 {
|
|
_serde::export::Some(__field11) =>
|
|
__field11,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("reblogs_count")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field12 =
|
|
match __field12 {
|
|
_serde::export::Some(__field12) =>
|
|
__field12,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("favourites_count")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field13 =
|
|
match __field13 {
|
|
_serde::export::Some(__field13) =>
|
|
__field13,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("reblogged")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field14 =
|
|
match __field14 {
|
|
_serde::export::Some(__field14) =>
|
|
__field14,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("favourited")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field15 =
|
|
match __field15 {
|
|
_serde::export::Some(__field15) =>
|
|
__field15,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("sensitive")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field16 =
|
|
match __field16 {
|
|
_serde::export::Some(__field16) =>
|
|
__field16,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("spoiler_text")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field17 =
|
|
match __field17 {
|
|
_serde::export::Some(__field17) =>
|
|
__field17,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("visibility")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field18 =
|
|
match __field18 {
|
|
_serde::export::Some(__field18) =>
|
|
__field18,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("media_attachments")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field19 =
|
|
match __field19 {
|
|
_serde::export::Some(__field19) =>
|
|
__field19,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("mentions")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field20 =
|
|
match __field20 {
|
|
_serde::export::Some(__field20) =>
|
|
__field20,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("tags")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field21 =
|
|
match __field21 {
|
|
_serde::export::Some(__field21) =>
|
|
__field21,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("card")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field22 =
|
|
match __field22 {
|
|
_serde::export::Some(__field22) =>
|
|
__field22,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("application")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field23 =
|
|
match __field23 {
|
|
_serde::export::Some(__field23) =>
|
|
__field23,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("language")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field24 =
|
|
match __field24 {
|
|
_serde::export::Some(__field24) =>
|
|
__field24,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("pinned")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Status{id: __field0,
|
|
uri: __field1,
|
|
url: __field2,
|
|
account: __field3,
|
|
in_reply_to_id:
|
|
__field4,
|
|
in_reply_to_account_id:
|
|
__field5,
|
|
reblog: __field6,
|
|
content: __field7,
|
|
created_at:
|
|
__field8,
|
|
emojis: __field9,
|
|
replies_count:
|
|
__field10,
|
|
reblogs_count:
|
|
__field11,
|
|
favourites_count:
|
|
__field12,
|
|
reblogged:
|
|
__field13,
|
|
favourited:
|
|
__field14,
|
|
sensitive:
|
|
__field15,
|
|
spoiler_text:
|
|
__field16,
|
|
visibility:
|
|
__field17,
|
|
media_attachments:
|
|
__field18,
|
|
mentions: __field19,
|
|
tags: __field20,
|
|
card: __field21,
|
|
application:
|
|
__field22,
|
|
language: __field23,
|
|
pinned: __field24,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["id", "uri", "url", "account", "in_reply_to_id",
|
|
"in_reply_to_account_id", "reblog", "content",
|
|
"created_at", "emojis", "replies_count",
|
|
"reblogs_count", "favourites_count",
|
|
"reblogged", "favourited", "sensitive",
|
|
"spoiler_text", "visibility",
|
|
"media_attachments", "mentions", "tags", "card",
|
|
"application", "language", "pinned"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Status",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Status>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Status { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Status {
|
|
#[inline]
|
|
fn eq(&self, other: &Status) -> bool {
|
|
match *other {
|
|
Status {
|
|
id: ref __self_1_0,
|
|
uri: ref __self_1_1,
|
|
url: ref __self_1_2,
|
|
account: ref __self_1_3,
|
|
in_reply_to_id: ref __self_1_4,
|
|
in_reply_to_account_id: ref __self_1_5,
|
|
reblog: ref __self_1_6,
|
|
content: ref __self_1_7,
|
|
created_at: ref __self_1_8,
|
|
emojis: ref __self_1_9,
|
|
replies_count: ref __self_1_10,
|
|
reblogs_count: ref __self_1_11,
|
|
favourites_count: ref __self_1_12,
|
|
reblogged: ref __self_1_13,
|
|
favourited: ref __self_1_14,
|
|
sensitive: ref __self_1_15,
|
|
spoiler_text: ref __self_1_16,
|
|
visibility: ref __self_1_17,
|
|
media_attachments: ref __self_1_18,
|
|
mentions: ref __self_1_19,
|
|
tags: ref __self_1_20,
|
|
card: ref __self_1_21,
|
|
application: ref __self_1_22,
|
|
language: ref __self_1_23,
|
|
pinned: ref __self_1_24 } =>
|
|
match *self {
|
|
Status {
|
|
id: ref __self_0_0,
|
|
uri: ref __self_0_1,
|
|
url: ref __self_0_2,
|
|
account: ref __self_0_3,
|
|
in_reply_to_id: ref __self_0_4,
|
|
in_reply_to_account_id: ref __self_0_5,
|
|
reblog: ref __self_0_6,
|
|
content: ref __self_0_7,
|
|
created_at: ref __self_0_8,
|
|
emojis: ref __self_0_9,
|
|
replies_count: ref __self_0_10,
|
|
reblogs_count: ref __self_0_11,
|
|
favourites_count: ref __self_0_12,
|
|
reblogged: ref __self_0_13,
|
|
favourited: ref __self_0_14,
|
|
sensitive: ref __self_0_15,
|
|
spoiler_text: ref __self_0_16,
|
|
visibility: ref __self_0_17,
|
|
media_attachments: ref __self_0_18,
|
|
mentions: ref __self_0_19,
|
|
tags: ref __self_0_20,
|
|
card: ref __self_0_21,
|
|
application: ref __self_0_22,
|
|
language: ref __self_0_23,
|
|
pinned: ref __self_0_24 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4) &&
|
|
(*__self_0_5) == (*__self_1_5) &&
|
|
(*__self_0_6) == (*__self_1_6) &&
|
|
(*__self_0_7) == (*__self_1_7) &&
|
|
(*__self_0_8) == (*__self_1_8) &&
|
|
(*__self_0_9) == (*__self_1_9) &&
|
|
(*__self_0_10) == (*__self_1_10) &&
|
|
(*__self_0_11) == (*__self_1_11) &&
|
|
(*__self_0_12) == (*__self_1_12) &&
|
|
(*__self_0_13) == (*__self_1_13) &&
|
|
(*__self_0_14) == (*__self_1_14) &&
|
|
(*__self_0_15) == (*__self_1_15) &&
|
|
(*__self_0_16) == (*__self_1_16) &&
|
|
(*__self_0_17) == (*__self_1_17) &&
|
|
(*__self_0_18) == (*__self_1_18) &&
|
|
(*__self_0_19) == (*__self_1_19) &&
|
|
(*__self_0_20) == (*__self_1_20) &&
|
|
(*__self_0_21) == (*__self_1_21) &&
|
|
(*__self_0_22) == (*__self_1_22) &&
|
|
(*__self_0_23) == (*__self_1_23) &&
|
|
(*__self_0_24) == (*__self_1_24),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Status) -> bool {
|
|
match *other {
|
|
Status {
|
|
id: ref __self_1_0,
|
|
uri: ref __self_1_1,
|
|
url: ref __self_1_2,
|
|
account: ref __self_1_3,
|
|
in_reply_to_id: ref __self_1_4,
|
|
in_reply_to_account_id: ref __self_1_5,
|
|
reblog: ref __self_1_6,
|
|
content: ref __self_1_7,
|
|
created_at: ref __self_1_8,
|
|
emojis: ref __self_1_9,
|
|
replies_count: ref __self_1_10,
|
|
reblogs_count: ref __self_1_11,
|
|
favourites_count: ref __self_1_12,
|
|
reblogged: ref __self_1_13,
|
|
favourited: ref __self_1_14,
|
|
sensitive: ref __self_1_15,
|
|
spoiler_text: ref __self_1_16,
|
|
visibility: ref __self_1_17,
|
|
media_attachments: ref __self_1_18,
|
|
mentions: ref __self_1_19,
|
|
tags: ref __self_1_20,
|
|
card: ref __self_1_21,
|
|
application: ref __self_1_22,
|
|
language: ref __self_1_23,
|
|
pinned: ref __self_1_24 } =>
|
|
match *self {
|
|
Status {
|
|
id: ref __self_0_0,
|
|
uri: ref __self_0_1,
|
|
url: ref __self_0_2,
|
|
account: ref __self_0_3,
|
|
in_reply_to_id: ref __self_0_4,
|
|
in_reply_to_account_id: ref __self_0_5,
|
|
reblog: ref __self_0_6,
|
|
content: ref __self_0_7,
|
|
created_at: ref __self_0_8,
|
|
emojis: ref __self_0_9,
|
|
replies_count: ref __self_0_10,
|
|
reblogs_count: ref __self_0_11,
|
|
favourites_count: ref __self_0_12,
|
|
reblogged: ref __self_0_13,
|
|
favourited: ref __self_0_14,
|
|
sensitive: ref __self_0_15,
|
|
spoiler_text: ref __self_0_16,
|
|
visibility: ref __self_0_17,
|
|
media_attachments: ref __self_0_18,
|
|
mentions: ref __self_0_19,
|
|
tags: ref __self_0_20,
|
|
card: ref __self_0_21,
|
|
application: ref __self_0_22,
|
|
language: ref __self_0_23,
|
|
pinned: ref __self_0_24 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4) ||
|
|
(*__self_0_5) != (*__self_1_5) ||
|
|
(*__self_0_6) != (*__self_1_6) ||
|
|
(*__self_0_7) != (*__self_1_7) ||
|
|
(*__self_0_8) != (*__self_1_8) ||
|
|
(*__self_0_9) != (*__self_1_9) ||
|
|
(*__self_0_10) != (*__self_1_10) ||
|
|
(*__self_0_11) != (*__self_1_11) ||
|
|
(*__self_0_12) != (*__self_1_12) ||
|
|
(*__self_0_13) != (*__self_1_13) ||
|
|
(*__self_0_14) != (*__self_1_14) ||
|
|
(*__self_0_15) != (*__self_1_15) ||
|
|
(*__self_0_16) != (*__self_1_16) ||
|
|
(*__self_0_17) != (*__self_1_17) ||
|
|
(*__self_0_18) != (*__self_1_18) ||
|
|
(*__self_0_19) != (*__self_1_19) ||
|
|
(*__self_0_20) != (*__self_1_20) ||
|
|
(*__self_0_21) != (*__self_1_21) ||
|
|
(*__self_0_22) != (*__self_1_22) ||
|
|
(*__self_0_23) != (*__self_1_23) ||
|
|
(*__self_0_24) != (*__self_1_24),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
/// A mention of another user.
|
|
pub struct Mention {
|
|
/// URL of user's profile (can be remote).
|
|
pub url: String,
|
|
/// The username of the account.
|
|
pub username: String,
|
|
/// Equals `username` for local users, includes `@domain` for remote ones.
|
|
pub acct: String,
|
|
/// Account ID.
|
|
pub id: String,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Mention {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Mention {
|
|
url: ref __self_0_0,
|
|
username: ref __self_0_1,
|
|
acct: ref __self_0_2,
|
|
id: ref __self_0_3 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Mention");
|
|
let _ =
|
|
debug_trait_builder.field("url", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("username",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("acct",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("id", &&(*__self_0_3));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Mention {
|
|
#[inline]
|
|
fn clone(&self) -> Mention {
|
|
match *self {
|
|
Mention {
|
|
url: ref __self_0_0,
|
|
username: ref __self_0_1,
|
|
acct: ref __self_0_2,
|
|
id: ref __self_0_3 } =>
|
|
Mention{url: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
username:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
acct: ::core::clone::Clone::clone(&(*__self_0_2)),
|
|
id: ::core::clone::Clone::clone(&(*__self_0_3)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Mention: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Mention {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__field3,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
3u64 =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 4")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"url" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"username" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"acct" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"id" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"url" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"username" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"acct" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"id" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Mention>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Mention;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Mention")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Mention with 4 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Mention with 4 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Mention with 4 elements"));
|
|
}
|
|
};
|
|
let __field3 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
|
|
&"struct Mention with 4 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Mention{url: __field0,
|
|
username: __field1,
|
|
acct: __field2,
|
|
id: __field3,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field3:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("url"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("username"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("acct"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field3 => {
|
|
if _serde::export::Option::is_some(&__field3)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("id"));
|
|
}
|
|
__field3 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("url")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("username")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("acct")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field3 =
|
|
match __field3 {
|
|
_serde::export::Some(__field3) =>
|
|
__field3,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("id")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Mention{url: __field0,
|
|
username: __field1,
|
|
acct: __field2,
|
|
id: __field3,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["url", "username", "acct", "id"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Mention",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Mention>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Mention { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Mention {
|
|
#[inline]
|
|
fn eq(&self, other: &Mention) -> bool {
|
|
match *other {
|
|
Mention {
|
|
url: ref __self_1_0,
|
|
username: ref __self_1_1,
|
|
acct: ref __self_1_2,
|
|
id: ref __self_1_3 } =>
|
|
match *self {
|
|
Mention {
|
|
url: ref __self_0_0,
|
|
username: ref __self_0_1,
|
|
acct: ref __self_0_2,
|
|
id: ref __self_0_3 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Mention) -> bool {
|
|
match *other {
|
|
Mention {
|
|
url: ref __self_1_0,
|
|
username: ref __self_1_1,
|
|
acct: ref __self_1_2,
|
|
id: ref __self_1_3 } =>
|
|
match *self {
|
|
Mention {
|
|
url: ref __self_0_0,
|
|
username: ref __self_0_1,
|
|
acct: ref __self_0_2,
|
|
id: ref __self_0_3 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
/// Struct representing an emoji within text.
|
|
pub struct Emoji {
|
|
/// The shortcode of the emoji
|
|
pub shortcode: String,
|
|
/// URL to the emoji static image
|
|
pub static_url: String,
|
|
/// URL to the emoji image
|
|
pub url: String,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Emoji {
|
|
#[inline]
|
|
fn clone(&self) -> Emoji {
|
|
match *self {
|
|
Emoji {
|
|
shortcode: ref __self_0_0,
|
|
static_url: ref __self_0_1,
|
|
url: ref __self_0_2 } =>
|
|
Emoji{shortcode:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
static_url:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
url: ::core::clone::Clone::clone(&(*__self_0_2)),},
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Emoji {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Emoji {
|
|
shortcode: ref __self_0_0,
|
|
static_url: ref __self_0_1,
|
|
url: ref __self_0_2 } => {
|
|
let mut debug_trait_builder = f.debug_struct("Emoji");
|
|
let _ =
|
|
debug_trait_builder.field("shortcode",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("static_url",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("url", &&(*__self_0_2));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Emoji: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Emoji {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field {
|
|
__field0,
|
|
__field1,
|
|
__field2,
|
|
__ignore,
|
|
}
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
2u64 =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 3")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"shortcode" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"static_url" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"url" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"shortcode" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"static_url" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"url" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Emoji>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Emoji;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Emoji")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Emoji with 3 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Emoji with 3 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
|
|
&"struct Emoji with 3 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Emoji{shortcode: __field0,
|
|
static_url: __field1,
|
|
url: __field2,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field2:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("shortcode"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("static_url"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("url"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("shortcode")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("static_url")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("url")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Emoji{shortcode: __field0,
|
|
static_url: __field1,
|
|
url: __field2,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["shortcode", "static_url", "url"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Emoji",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Emoji>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Emoji { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Emoji {
|
|
#[inline]
|
|
fn eq(&self, other: &Emoji) -> bool {
|
|
match *other {
|
|
Emoji {
|
|
shortcode: ref __self_1_0,
|
|
static_url: ref __self_1_1,
|
|
url: ref __self_1_2 } =>
|
|
match *self {
|
|
Emoji {
|
|
shortcode: ref __self_0_0,
|
|
static_url: ref __self_0_1,
|
|
url: ref __self_0_2 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Emoji) -> bool {
|
|
match *other {
|
|
Emoji {
|
|
shortcode: ref __self_1_0,
|
|
static_url: ref __self_1_1,
|
|
url: ref __self_1_2 } =>
|
|
match *self {
|
|
Emoji {
|
|
shortcode: ref __self_0_0,
|
|
static_url: ref __self_0_1,
|
|
url: ref __self_0_2 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
/// Hashtags in the status.
|
|
pub struct Tag {
|
|
/// The hashtag, not including the preceding `#`.
|
|
pub name: String,
|
|
/// The URL of the hashtag.
|
|
pub url: String,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Tag {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Tag { name: ref __self_0_0, url: ref __self_0_1 } => {
|
|
let mut debug_trait_builder = f.debug_struct("Tag");
|
|
let _ =
|
|
debug_trait_builder.field("name",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("url", &&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Tag {
|
|
#[inline]
|
|
fn clone(&self) -> Tag {
|
|
match *self {
|
|
Tag { name: ref __self_0_0, url: ref __self_0_1 } =>
|
|
Tag{name: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
url: ::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Tag: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Tag {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field { __field0, __field1, __ignore, }
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 2")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"name" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"url" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"name" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"url" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Tag>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Tag;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Tag")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Tag with 2 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Tag with 2 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Tag{name: __field0,
|
|
url: __field1,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("name"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("url"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("name")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("url")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Tag{name: __field0,
|
|
url: __field1,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["name", "url"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Tag",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Tag>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Tag { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Tag {
|
|
#[inline]
|
|
fn eq(&self, other: &Tag) -> bool {
|
|
match *other {
|
|
Tag { name: ref __self_1_0, url: ref __self_1_1 } =>
|
|
match *self {
|
|
Tag { name: ref __self_0_0, url: ref __self_0_1 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Tag) -> bool {
|
|
match *other {
|
|
Tag { name: ref __self_1_0, url: ref __self_1_1 } =>
|
|
match *self {
|
|
Tag { name: ref __self_0_0, url: ref __self_0_1 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
/// Application details.
|
|
pub struct Application {
|
|
/// Name of the application.
|
|
pub name: String,
|
|
/// Homepage URL of the application.
|
|
pub website: Option<String>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Application {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Application {
|
|
name: ref __self_0_0, website: ref __self_0_1 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Application");
|
|
let _ =
|
|
debug_trait_builder.field("name",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("website",
|
|
&&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Application {
|
|
#[inline]
|
|
fn clone(&self) -> Application {
|
|
match *self {
|
|
Application {
|
|
name: ref __self_0_0, website: ref __self_0_1 } =>
|
|
Application{name:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
website:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Application: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Application {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field { __field0, __field1, __ignore, }
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
|
|
{
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
1u64 =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 2")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"name" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"website" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"name" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"website" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => {
|
|
_serde::export::Ok(__Field::__ignore)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Application>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
|
|
{
|
|
type Value = Application;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Application")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct Application with 2 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) =>
|
|
__value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct Application with 2 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(Application{name: __field0,
|
|
website:
|
|
__field1,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
->
|
|
_serde::export::Result<Self::Value,
|
|
__A::Error> where
|
|
__A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("name"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("website"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=>
|
|
__val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("name")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("website")
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(Application{name: __field0,
|
|
website:
|
|
__field1,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["name", "website"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Application",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Application>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Application { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Application {
|
|
#[inline]
|
|
fn eq(&self, other: &Application) -> bool {
|
|
match *other {
|
|
Application {
|
|
name: ref __self_1_0, website: ref __self_1_1 } =>
|
|
match *self {
|
|
Application {
|
|
name: ref __self_0_0, website: ref __self_0_1 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Application) -> bool {
|
|
match *other {
|
|
Application {
|
|
name: ref __self_1_0, website: ref __self_1_1 } =>
|
|
match *self {
|
|
Application {
|
|
name: ref __self_0_0, website: ref __self_0_1 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// An empty JSON object.
|
|
pub struct Empty {
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Empty: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Empty {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field { __ignore, }
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor {
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 0")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
_ => { _serde::export::Ok(__Field::__ignore) }
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
_ => { _serde::export::Ok(__Field::__ignore) }
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Empty>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de> {
|
|
type Value = Empty;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct Empty")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, _: __A)
|
|
-> _serde::export::Result<Self::Value, __A::Error>
|
|
where __A: _serde::de::SeqAccess<'de> {
|
|
_serde::export::Ok(Empty{})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
-> _serde::export::Result<Self::Value, __A::Error>
|
|
where __A: _serde::de::MapAccess<'de> {
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) =>
|
|
{
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
_serde::export::Ok(Empty{})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] = &[];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"Empty", FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Empty>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Empty {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match *self {
|
|
Empty { } => {
|
|
let mut debug_trait_builder = f.debug_struct("Empty");
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::marker::Copy for Empty { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Empty {
|
|
#[inline]
|
|
fn clone(&self) -> Empty { { *self } }
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for Empty { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Empty {
|
|
#[inline]
|
|
fn eq(&self, other: &Empty) -> bool {
|
|
match *other {
|
|
Empty { } => match *self { Empty { } => true, },
|
|
}
|
|
}
|
|
}
|
|
/// The purpose of this module is to alleviate imports of many common
|
|
/// structs by adding a glob import to the top of mastodon heavy
|
|
/// modules:
|
|
pub mod prelude {
|
|
pub use super::{account::{Account, Source},
|
|
attachment::{Attachment, MediaType}, card::Card,
|
|
context::Context, event::Event,
|
|
filter::{Filter, FilterContext}, instance::*,
|
|
list::List, mention::Mention,
|
|
notification::Notification, push::Subscription,
|
|
relationship::Relationship, report::Report,
|
|
search_result::{SearchResult, SearchResultV2},
|
|
status::{Application, Emoji, Status}, Empty};
|
|
}
|
|
}
|
|
/// Errors
|
|
pub mod errors {
|
|
use std::{error, fmt, io::Error as IoError};
|
|
use hyper_old_types::Error as HeaderParseError;
|
|
use reqwest::{header::ToStrError as HeaderStrError, Error as HttpError,
|
|
StatusCode};
|
|
use serde_json::Error as SerdeError;
|
|
use serde_qs::Error as SerdeQsError;
|
|
use serde_urlencoded::ser::Error as UrlEncodedError;
|
|
use url::ParseError as UrlError;
|
|
use tungstenite::error::Error as WebSocketError;
|
|
/// Convience type over `std::result::Result` with `Error` as the error type.
|
|
pub type Result<T> = ::std::result::Result<T, Error>;
|
|
/// enum of possible errors encountered using the mastodon API.
|
|
pub enum Error {
|
|
|
|
/// Error from the Mastodon API. This typically means something went
|
|
/// wrong with your authentication or data.
|
|
Api(ApiError),
|
|
|
|
/// Error deserialising to json. Typically represents a breaking change in
|
|
/// the Mastodon API
|
|
Serde(SerdeError),
|
|
|
|
/// Error serializing to url-encoded string
|
|
UrlEncoded(UrlEncodedError),
|
|
|
|
/// Error encountered in the HTTP backend while requesting a route.
|
|
Http(HttpError),
|
|
|
|
/// Wrapper around the `std::io::Error` struct.
|
|
Io(IoError),
|
|
|
|
/// Wrapper around the `url::ParseError` struct.
|
|
Url(UrlError),
|
|
|
|
/// Missing Client Id.
|
|
ClientIdRequired,
|
|
|
|
/// Missing Client Secret.
|
|
ClientSecretRequired,
|
|
|
|
/// Missing Access Token.
|
|
AccessTokenRequired,
|
|
|
|
/// Generic client error.
|
|
Client(StatusCode),
|
|
|
|
/// Generic server error.
|
|
Server(StatusCode),
|
|
|
|
/// MastodonBuilder & AppBuilder error
|
|
MissingField(&'static str),
|
|
|
|
/// Error converting an http header to a string
|
|
HeaderStrError(HeaderStrError),
|
|
|
|
/// Error parsing the http Link header
|
|
HeaderParseError(HeaderParseError),
|
|
|
|
/// Error serializing to a query string
|
|
SerdeQs(SerdeQsError),
|
|
|
|
/// WebSocket error
|
|
WebSocket(WebSocketError),
|
|
|
|
/// Other errors
|
|
Other(String),
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Error {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match (&*self,) {
|
|
(&Error::Api(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Api");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::Serde(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Serde");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::UrlEncoded(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("UrlEncoded");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::Http(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Http");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::Io(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Io");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::Url(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Url");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::ClientIdRequired,) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("ClientIdRequired");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::ClientSecretRequired,) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("ClientSecretRequired");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::AccessTokenRequired,) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("AccessTokenRequired");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::Client(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Client");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::Server(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Server");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::MissingField(ref __self_0),) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("MissingField");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::HeaderStrError(ref __self_0),) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("HeaderStrError");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::HeaderParseError(ref __self_0),) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("HeaderParseError");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::SerdeQs(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("SerdeQs");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::WebSocket(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("WebSocket");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Error::Other(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Other");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl fmt::Display for Error {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
f.write_fmt(::core::fmt::Arguments::new_v1(&[""],
|
|
&match (&self,) {
|
|
(arg0,) =>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Debug::fmt)],
|
|
}))
|
|
}
|
|
}
|
|
impl error::Error for Error {
|
|
fn source(&self) -> Option<&(dyn error::Error + 'static)> {
|
|
Some(match *self {
|
|
Error::Api(ref e) => e,
|
|
Error::Serde(ref e) => e,
|
|
Error::UrlEncoded(ref e) => e,
|
|
Error::Http(ref e) => e,
|
|
Error::Io(ref e) => e,
|
|
Error::Url(ref e) => e,
|
|
Error::HeaderStrError(ref e) => e,
|
|
Error::HeaderParseError(ref e) => e,
|
|
Error::SerdeQs(ref e) => e,
|
|
Error::WebSocket(ref e) => e,
|
|
Error::Client(..) | Error::Server(..) => { return None }
|
|
Error::ClientIdRequired => return None,
|
|
Error::ClientSecretRequired => return None,
|
|
Error::AccessTokenRequired => return None,
|
|
Error::MissingField(_) => return None,
|
|
Error::Other(..) => return None,
|
|
})
|
|
}
|
|
}
|
|
/// Error returned from the Mastodon API.
|
|
pub struct ApiError {
|
|
/// The type of error.
|
|
pub error: Option<String>,
|
|
/// The description of the error.
|
|
pub error_description: Option<String>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for ApiError {
|
|
#[inline]
|
|
fn clone(&self) -> ApiError {
|
|
match *self {
|
|
ApiError {
|
|
error: ref __self_0_0, error_description: ref __self_0_1 } =>
|
|
ApiError{error: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
error_description:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for ApiError {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match *self {
|
|
ApiError {
|
|
error: ref __self_0_0, error_description: ref __self_0_1 } =>
|
|
{
|
|
let mut debug_trait_builder = f.debug_struct("ApiError");
|
|
let _ =
|
|
debug_trait_builder.field("error", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("error_description",
|
|
&&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_ApiError: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for ApiError {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field { __field0, __field1, __ignore, }
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor {
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 => _serde::export::Ok(__Field::__field0),
|
|
1u64 => _serde::export::Ok(__Field::__field1),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 2")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"error" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"error_description" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => { _serde::export::Ok(__Field::__ignore) }
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"error" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"error_description" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
_ => { _serde::export::Ok(__Field::__ignore) }
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<ApiError>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de> {
|
|
type Value = ApiError;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct ApiError")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
-> _serde::export::Result<Self::Value, __A::Error>
|
|
where __A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) => __value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct ApiError with 2 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) => __value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct ApiError with 2 elements"));
|
|
}
|
|
};
|
|
_serde::export::Ok(ApiError{error: __field0,
|
|
error_description:
|
|
__field1,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
-> _serde::export::Result<Self::Value, __A::Error>
|
|
where __A: _serde::de::MapAccess<'de> {
|
|
let mut __field0:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
let mut __field1:
|
|
_serde::export::Option<Option<String>> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("error"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("error_description"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) =>
|
|
{
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("error")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("error_description")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(ApiError{error: __field0,
|
|
error_description:
|
|
__field1,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["error", "error_description"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"ApiError",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<ApiError>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl fmt::Display for ApiError {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
f.write_fmt(::core::fmt::Arguments::new_v1(&[""],
|
|
&match (&self,) {
|
|
(arg0,) =>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Debug::fmt)],
|
|
}))
|
|
}
|
|
}
|
|
impl error::Error for ApiError { }
|
|
macro_rules! from {
|
|
($ ($ (# [$ met : meta]) * $ typ : ident, $ variant : ident,) *) =>
|
|
{
|
|
$
|
|
($ (# [$ met]) * impl From < $ typ > for Error
|
|
{
|
|
fn from(from : $ typ) -> Self
|
|
{ use crate :: Error :: * ; $ variant(from) }
|
|
}) *
|
|
}
|
|
}
|
|
impl From<HttpError> for Error {
|
|
fn from(from: HttpError) -> Self {
|
|
use crate::Error::*;
|
|
Http(from)
|
|
}
|
|
}
|
|
impl From<IoError> for Error {
|
|
fn from(from: IoError) -> Self {
|
|
use crate::Error::*;
|
|
Io(from)
|
|
}
|
|
}
|
|
impl From<SerdeError> for Error {
|
|
fn from(from: SerdeError) -> Self {
|
|
use crate::Error::*;
|
|
Serde(from)
|
|
}
|
|
}
|
|
impl From<UrlEncodedError> for Error {
|
|
fn from(from: UrlEncodedError) -> Self {
|
|
use crate::Error::*;
|
|
UrlEncoded(from)
|
|
}
|
|
}
|
|
impl From<UrlError> for Error {
|
|
fn from(from: UrlError) -> Self {
|
|
use crate::Error::*;
|
|
Url(from)
|
|
}
|
|
}
|
|
impl From<ApiError> for Error {
|
|
fn from(from: ApiError) -> Self {
|
|
use crate::Error::*;
|
|
Api(from)
|
|
}
|
|
}
|
|
impl From<HeaderStrError> for Error {
|
|
fn from(from: HeaderStrError) -> Self {
|
|
use crate::Error::*;
|
|
HeaderStrError(from)
|
|
}
|
|
}
|
|
impl From<HeaderParseError> for Error {
|
|
fn from(from: HeaderParseError) -> Self {
|
|
use crate::Error::*;
|
|
HeaderParseError(from)
|
|
}
|
|
}
|
|
impl From<SerdeQsError> for Error {
|
|
fn from(from: SerdeQsError) -> Self {
|
|
use crate::Error::*;
|
|
SerdeQs(from)
|
|
}
|
|
}
|
|
impl From<WebSocketError> for Error {
|
|
fn from(from: WebSocketError) -> Self {
|
|
use crate::Error::*;
|
|
WebSocket(from)
|
|
}
|
|
}
|
|
impl From<String> for Error {
|
|
fn from(from: String) -> Self {
|
|
use crate::Error::*;
|
|
Other(from)
|
|
}
|
|
}
|
|
#[macro_export]
|
|
/// Used to easily create errors from strings
|
|
macro_rules! format_err {
|
|
($ ($ arg : tt) *) =>
|
|
{ { use elefren :: Error ; Error :: Other(format ! ($ ($ arg) *)) } }
|
|
}
|
|
}
|
|
/// Collection of helpers for serializing/deserializing `Data` objects
|
|
pub mod helpers {
|
|
/// Helpers for working with the command line
|
|
pub mod cli {
|
|
use std::io::{self, BufRead, Write};
|
|
use crate::errors::Result;
|
|
use crate::registration::Registered;
|
|
use crate::Mastodon;
|
|
/// Finishes the authentication process for the given `Registered` object,
|
|
/// using the command-line
|
|
pub fn authenticate(registration: Registered) -> Result<Mastodon> {
|
|
let url = registration.authorize_url()?;
|
|
let stdout = io::stdout();
|
|
let stdin = io::stdin();
|
|
let mut stdout = stdout.lock();
|
|
let mut stdin = stdin.lock();
|
|
(&mut stdout).write_fmt(::core::fmt::Arguments::new_v1(&["Click this link to authorize: ",
|
|
"\n"],
|
|
&match (&url,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))?;
|
|
(&mut stdout).write_fmt(::core::fmt::Arguments::new_v1(&["Paste the returned authorization code: "],
|
|
&match () {
|
|
() =>
|
|
[],
|
|
}))?;
|
|
stdout.flush()?;
|
|
let mut input = String::new();
|
|
stdin.read_line(&mut input)?;
|
|
let code = input.trim();
|
|
Ok(registration.complete(code)?)
|
|
}
|
|
}
|
|
}
|
|
mod mastodon_client {
|
|
use async_trait::async_trait;
|
|
use std::borrow::Cow;
|
|
use crate::entities::prelude::*;
|
|
use crate::errors::Result;
|
|
use crate::page::Page;
|
|
use crate::requests::{AddFilterRequest, AddPushRequest, StatusesRequest,
|
|
UpdateCredsRequest, UpdatePushRequest};
|
|
use crate::status_builder::NewStatus;
|
|
#[doc =
|
|
" Represents the set of methods that a Mastodon Client can do, so that"]
|
|
#[doc = " implementations might be swapped out for testing"]
|
|
#[allow(unused)]
|
|
pub trait MastodonClient {
|
|
#[doc = " GET /api/v1/favourites"]
|
|
#[must_use]
|
|
fn favourites<'life0, 'async_trait>(&'life0 self)
|
|
->
|
|
::core::pin::Pin<Box<dyn ::core::future::Future<Output =
|
|
Result<Page<'_,
|
|
Status>>> +
|
|
::core::marker::Send + 'async_trait>> where
|
|
'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
|
|
#[allow(clippy :: missing_docs_in_private_items, clippy ::
|
|
type_repetition_in_bounds, clippy ::
|
|
used_underscore_binding,)]
|
|
async fn __favourites<AsyncTrait: ?Sized + MastodonClient +
|
|
::core::marker::Sync>(_self: &AsyncTrait)
|
|
-> Result<Page<'_, Status>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
Box::pin(__favourites::<Self>(self))
|
|
}
|
|
#[doc = " GET /api/v1/blocks"]
|
|
#[must_use]
|
|
fn blocks<'life0, 'async_trait>(&'life0 self)
|
|
->
|
|
::core::pin::Pin<Box<dyn ::core::future::Future<Output =
|
|
Result<Page<'_,
|
|
Account>>> +
|
|
::core::marker::Send + 'async_trait>> where
|
|
'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
|
|
#[allow(clippy :: missing_docs_in_private_items, clippy ::
|
|
type_repetition_in_bounds, clippy ::
|
|
used_underscore_binding,)]
|
|
async fn __blocks<AsyncTrait: ?Sized + MastodonClient +
|
|
::core::marker::Sync>(_self: &AsyncTrait)
|
|
-> Result<Page<'_, Account>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
Box::pin(__blocks::<Self>(self))
|
|
}
|
|
#[doc = " GET /api/v1/domain_blocks"]
|
|
#[must_use]
|
|
fn domain_blocks<'life0, 'async_trait>(&'life0 self)
|
|
->
|
|
::core::pin::Pin<Box<dyn ::core::future::Future<Output =
|
|
Result<Page<'_,
|
|
String>>> +
|
|
::core::marker::Send + 'async_trait>> where
|
|
'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
|
|
#[allow(clippy :: missing_docs_in_private_items, clippy ::
|
|
type_repetition_in_bounds, clippy ::
|
|
used_underscore_binding,)]
|
|
async fn __domain_blocks<AsyncTrait: ?Sized + MastodonClient +
|
|
::core::marker::Sync>(_self: &AsyncTrait)
|
|
-> Result<Page<'_, String>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
Box::pin(__domain_blocks::<Self>(self))
|
|
}
|
|
#[doc = " GET /api/v1/follow_requests"]
|
|
#[must_use]
|
|
fn follow_requests<'life0, 'async_trait>(&'life0 self)
|
|
->
|
|
::core::pin::Pin<Box<dyn ::core::future::Future<Output =
|
|
Result<Page<'_,
|
|
Account>>> +
|
|
::core::marker::Send + 'async_trait>> where
|
|
'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
|
|
#[allow(clippy :: missing_docs_in_private_items, clippy ::
|
|
type_repetition_in_bounds, clippy ::
|
|
used_underscore_binding,)]
|
|
async fn __follow_requests<AsyncTrait: ?Sized + MastodonClient +
|
|
::core::marker::Sync>(_self:
|
|
&AsyncTrait)
|
|
-> Result<Page<'_, Account>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
Box::pin(__follow_requests::<Self>(self))
|
|
}
|
|
#[doc = " GET /api/v1/timelines/home"]
|
|
#[must_use]
|
|
fn get_home_timeline<'life0, 'async_trait>(&'life0 self)
|
|
->
|
|
::core::pin::Pin<Box<dyn ::core::future::Future<Output =
|
|
Result<Page<'_,
|
|
Status>>> +
|
|
::core::marker::Send + 'async_trait>> where
|
|
'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
|
|
#[allow(clippy :: missing_docs_in_private_items, clippy ::
|
|
type_repetition_in_bounds, clippy ::
|
|
used_underscore_binding,)]
|
|
async fn __get_home_timeline<AsyncTrait: ?Sized + MastodonClient +
|
|
::core::marker::Sync>(_self:
|
|
&AsyncTrait)
|
|
-> Result<Page<'_, Status>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
Box::pin(__get_home_timeline::<Self>(self))
|
|
}
|
|
#[doc = " GET /api/v1/custom_emojis"]
|
|
#[must_use]
|
|
fn get_emojis<'life0, 'async_trait>(&'life0 self)
|
|
->
|
|
::core::pin::Pin<Box<dyn ::core::future::Future<Output =
|
|
Result<Page<'_,
|
|
Emoji>>> +
|
|
::core::marker::Send + 'async_trait>> where
|
|
'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
|
|
#[allow(clippy :: missing_docs_in_private_items, clippy ::
|
|
type_repetition_in_bounds, clippy ::
|
|
used_underscore_binding,)]
|
|
async fn __get_emojis<AsyncTrait: ?Sized + MastodonClient +
|
|
::core::marker::Sync>(_self: &AsyncTrait)
|
|
-> Result<Page<'_, Emoji>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
Box::pin(__get_emojis::<Self>(self))
|
|
}
|
|
#[doc = " GET /api/v1/mutes"]
|
|
#[must_use]
|
|
fn mutes<'life0, 'async_trait>(&'life0 self)
|
|
->
|
|
::core::pin::Pin<Box<dyn ::core::future::Future<Output =
|
|
Result<Page<'_,
|
|
Account>>> +
|
|
::core::marker::Send + 'async_trait>> where
|
|
'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
|
|
#[allow(clippy :: missing_docs_in_private_items, clippy ::
|
|
type_repetition_in_bounds, clippy ::
|
|
used_underscore_binding,)]
|
|
async fn __mutes<AsyncTrait: ?Sized + MastodonClient +
|
|
::core::marker::Sync>(_self: &AsyncTrait)
|
|
-> Result<Page<'_, Account>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
Box::pin(__mutes::<Self>(self))
|
|
}
|
|
#[doc = " GET /api/v1/notifications"]
|
|
#[must_use]
|
|
fn notifications<'life0, 'async_trait>(&'life0 self)
|
|
->
|
|
::core::pin::Pin<Box<dyn ::core::future::Future<Output =
|
|
Result<Page<'_,
|
|
Notification>>> +
|
|
::core::marker::Send + 'async_trait>> where
|
|
'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
|
|
#[allow(clippy :: missing_docs_in_private_items, clippy ::
|
|
type_repetition_in_bounds, clippy ::
|
|
used_underscore_binding,)]
|
|
async fn __notifications<AsyncTrait: ?Sized + MastodonClient +
|
|
::core::marker::Sync>(_self: &AsyncTrait)
|
|
-> Result<Page<'_, Notification>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
Box::pin(__notifications::<Self>(self))
|
|
}
|
|
#[doc = " GET /api/v1/reports"]
|
|
#[must_use]
|
|
fn reports<'life0, 'async_trait>(&'life0 self)
|
|
->
|
|
::core::pin::Pin<Box<dyn ::core::future::Future<Output =
|
|
Result<Page<'_,
|
|
Report>>> +
|
|
::core::marker::Send + 'async_trait>> where
|
|
'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
|
|
#[allow(clippy :: missing_docs_in_private_items, clippy ::
|
|
type_repetition_in_bounds, clippy ::
|
|
used_underscore_binding,)]
|
|
async fn __reports<AsyncTrait: ?Sized + MastodonClient +
|
|
::core::marker::Sync>(_self: &AsyncTrait)
|
|
-> Result<Page<'_, Report>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
Box::pin(__reports::<Self>(self))
|
|
}
|
|
#[doc = " GET /api/v1/accounts/:id/followers"]
|
|
fn followers(&self, id: &str) -> Result<Page<Account>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/accounts/:id/following"]
|
|
fn following(&self, id: &str) -> Result<Page<Account>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/statuses/:id/reblogged_by"]
|
|
fn reblogged_by(&self, id: &str) -> Result<Page<Account>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/statuses/:id/favourited_by"]
|
|
fn favourited_by(&self, id: &str) -> Result<Page<Account>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " DELETE /api/v1/domain_blocks"]
|
|
fn unblock_domain(&self, domain: String) -> Result<Empty> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/instance"]
|
|
fn instance(&self) -> Result<Instance> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/accounts/verify_credentials"]
|
|
fn verify_credentials(&self) -> Result<Account> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/reports"]
|
|
fn report(&self, account_id: &str, status_ids: Vec<&str>,
|
|
comment: String) -> Result<Report> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/domain_blocks"]
|
|
fn block_domain(&self, domain: String) -> Result<Empty> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/accounts/follow_requests/authorize"]
|
|
fn authorize_follow_request(&self, id: &str) -> Result<Empty> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/accounts/follow_requests/reject"]
|
|
fn reject_follow_request(&self, id: &str) -> Result<Empty> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/search"]
|
|
fn search<'a>(&self, q: &'a str, resolve: bool)
|
|
-> Result<SearchResult> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v2/search"]
|
|
fn search_v2<'a>(&self, q: &'a str, resolve: bool)
|
|
-> Result<SearchResultV2> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/follows"]
|
|
fn follows(&self, uri: Cow<'static, str>) -> Result<Account> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/media"]
|
|
fn media(&self, file: Cow<'static, str>) -> Result<Attachment> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/notifications/clear"]
|
|
fn clear_notifications(&self) -> Result<Empty> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/notifications/dismiss"]
|
|
fn dismiss_notification(&self, id: &str) -> Result<Empty> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/accounts/:id"]
|
|
fn get_account(&self, id: &str) -> Result<Account> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/accounts/:id/follow"]
|
|
fn follow(&self, id: &str) -> Result<Relationship> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/accounts/:id/unfollow"]
|
|
fn unfollow(&self, id: &str) -> Result<Relationship> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/accounts/:id/block"]
|
|
fn block(&self, id: &str) -> Result<Relationship> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/accounts/:id/unblock"]
|
|
fn unblock(&self, id: &str) -> Result<Relationship> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/accounts/:id/mute"]
|
|
fn mute(&self, id: &str) -> Result<Relationship> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/accounts/:id/unmute"]
|
|
fn unmute(&self, id: &str) -> Result<Relationship> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/notifications/:id"]
|
|
fn get_notification(&self, id: &str) -> Result<Notification> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/statuses/:id"]
|
|
fn get_status(&self, id: &str) -> Result<Status> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/statuses/:id/context"]
|
|
fn get_context(&self, id: &str) -> Result<Context> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/statuses/:id/card"]
|
|
fn get_card(&self, id: &str) -> Result<Card> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/statuses/:id/reblog"]
|
|
fn reblog(&self, id: &str) -> Result<Status> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/statuses/:id/unreblog"]
|
|
fn unreblog(&self, id: &str) -> Result<Status> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/statuses/:id/favourite"]
|
|
fn favourite(&self, id: &str) -> Result<Status> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/statuses/:id/unfavourite"]
|
|
fn unfavourite(&self, id: &str) -> Result<Status> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " DELETE /api/v1/statuses/:id"]
|
|
fn delete_status(&self, id: &str) -> Result<Empty> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " PATCH /api/v1/accounts/update_credentials"]
|
|
fn update_credentials(&self, builder: &mut UpdateCredsRequest)
|
|
-> Result<Account> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/statuses"]
|
|
fn new_status(&self, status: NewStatus) -> Result<Status> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/timelines/public"]
|
|
fn get_public_timeline(&self, local: bool) -> Result<Vec<Status>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/timelines/tag/:hashtag"]
|
|
fn get_tagged_timeline(&self, hashtag: String, local: bool)
|
|
-> Result<Vec<Status>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/accounts/:id/statuses"]
|
|
fn statuses<'a, 'b: 'a, S>(&'b self, id: &'b str, request: S)
|
|
-> Result<Page<Status>> where S: Into<Option<StatusesRequest<'a>>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/accounts/relationships"]
|
|
fn relationships(&self, ids: &[&str]) -> Result<Page<Relationship>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc =
|
|
" GET /api/v1/accounts/search?q=:query&limit=:limit&following=:following"]
|
|
#[must_use]
|
|
fn search_accounts<'life0, 'life1,
|
|
'async_trait>(&'life0 self, query: &'life1 str,
|
|
limit: Option<u64>, following: bool)
|
|
->
|
|
::core::pin::Pin<Box<dyn ::core::future::Future<Output =
|
|
Result<Page<'_,
|
|
Account>>> +
|
|
::core::marker::Send + 'async_trait>> where
|
|
'life0: 'async_trait, 'life1: 'async_trait,
|
|
Self: ::core::marker::Sync + 'async_trait {
|
|
#[allow(clippy :: missing_docs_in_private_items, clippy ::
|
|
type_repetition_in_bounds, clippy ::
|
|
used_underscore_binding,)]
|
|
async fn __search_accounts<AsyncTrait: ?Sized + MastodonClient +
|
|
::core::marker::Sync>(_self:
|
|
&AsyncTrait,
|
|
query: &str,
|
|
limit:
|
|
Option<u64>,
|
|
following: bool)
|
|
-> Result<Page<'_, Account>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
Box::pin(__search_accounts::<Self>(self, query, limit, following))
|
|
}
|
|
#[doc = " POST /api/v1/push/subscription"]
|
|
fn add_push_subscription(&self, request: &AddPushRequest)
|
|
-> Result<Subscription> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " PUT /api/v1/push/subscription"]
|
|
fn update_push_data(&self, request: &UpdatePushRequest)
|
|
-> Result<Subscription> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/push/subscription"]
|
|
fn get_push_subscription(&self) -> Result<Subscription> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " DELETE /api/v1/push/subscription"]
|
|
fn delete_push_subscription(&self) -> Result<Empty> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/filters"]
|
|
fn get_filters(&self) -> Result<Vec<Filter>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/filters"]
|
|
fn add_filter(&self, request: &mut AddFilterRequest)
|
|
-> Result<Filter> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/filters/:id"]
|
|
fn get_filter(&self, id: &str) -> Result<Filter> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " PUT /api/v1/filters/:id"]
|
|
fn update_filter(&self, id: &str, request: &mut AddFilterRequest)
|
|
-> Result<Filter> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " DELETE /api/v1/filters/:id"]
|
|
fn delete_filter(&self, id: &str) -> Result<Empty> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/suggestions"]
|
|
fn get_follow_suggestions(&self) -> Result<Vec<Account>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " DELETE /api/v1/suggestions/:account_id"]
|
|
fn delete_from_suggestions(&self, id: &str) -> Result<Empty> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " GET /api/v1/endorsements"]
|
|
#[must_use]
|
|
fn get_endorsements<'life0, 'async_trait>(&'life0 self)
|
|
->
|
|
::core::pin::Pin<Box<dyn ::core::future::Future<Output =
|
|
Result<Page<'_,
|
|
Account>>> +
|
|
::core::marker::Send + 'async_trait>> where
|
|
'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
|
|
#[allow(clippy :: missing_docs_in_private_items, clippy ::
|
|
type_repetition_in_bounds, clippy ::
|
|
used_underscore_binding,)]
|
|
async fn __get_endorsements<AsyncTrait: ?Sized + MastodonClient +
|
|
::core::marker::Sync>(_self:
|
|
&AsyncTrait)
|
|
-> Result<Page<'_, Account>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
Box::pin(__get_endorsements::<Self>(self))
|
|
}
|
|
#[doc = " POST /api/v1/accounts/:id/pin"]
|
|
fn endorse_user(&self, id: &str) -> Result<Relationship> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " POST /api/v1/accounts/:id/unpin"]
|
|
fn unendorse_user(&self, id: &str) -> Result<Relationship> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc =
|
|
" Shortcut for: `let me = client.verify_credentials(); client.followers()`"]
|
|
#[doc = ""]
|
|
#[doc = " ```no_run"]
|
|
#[doc = " # extern crate elefren;"]
|
|
#[doc = " # use std::error::Error;"]
|
|
#[doc = " # use elefren::prelude::*;"]
|
|
#[doc = " # fn main() -> Result<(), Box<Error>> {"]
|
|
#[doc = " # let data = Data {"]
|
|
#[doc = " # base: \"\".into(),"]
|
|
#[doc = " # client_id: \"\".into(),"]
|
|
#[doc = " # client_secret: \"\".into(),"]
|
|
#[doc = " # redirect: \"\".into(),"]
|
|
#[doc = " # token: \"\".into(),"]
|
|
#[doc = " # };"]
|
|
#[doc = " # let client = Mastodon::from(data);"]
|
|
#[doc = " let follows_me = client.follows_me()?;"]
|
|
#[doc = " # Ok(())"]
|
|
#[doc = " # }"]
|
|
fn follows_me(&self) -> Result<Page<Account>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
#[doc = " Shortcut for"]
|
|
#[doc =
|
|
" `let me = client.verify_credentials(); client.following(&me.id)`"]
|
|
#[doc = ""]
|
|
#[doc = " ```no_run"]
|
|
#[doc = " # extern crate elefren;"]
|
|
#[doc = " # use std::error::Error;"]
|
|
#[doc = " # use elefren::prelude::*;"]
|
|
#[doc = " # fn main() -> Result<(), Box<Error>> {"]
|
|
#[doc = " # let data = Data {"]
|
|
#[doc = " # base: \"\".into(),"]
|
|
#[doc = " # client_id: \"\".into(),"]
|
|
#[doc = " # client_secret: \"\".into(),"]
|
|
#[doc = " # redirect: \"\".into(),"]
|
|
#[doc = " # token: \"\".into(),"]
|
|
#[doc = " # };"]
|
|
#[doc = " # let client = Mastodon::from(data);"]
|
|
#[doc = " let follows_me = client.followed_by_me()?;"]
|
|
#[doc = " # Ok(())"]
|
|
#[doc = " # }"]
|
|
fn followed_by_me(&self) -> Result<Page<Account>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
}
|
|
/// Trait that represents clients that can make unauthenticated calls to a
|
|
/// mastodon instance
|
|
#[allow(unused)]
|
|
pub trait MastodonUnauthenticated {
|
|
/// GET /api/v1/statuses/:id
|
|
fn get_status(&self, id: &str) -> Result<Status> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
/// GET /api/v1/statuses/:id/context
|
|
fn get_context(&self, id: &str) -> Result<Context> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
/// GET /api/v1/statuses/:id/card
|
|
fn get_card(&self, id: &str) -> Result<Card> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
/// GET /api/v1/statuses/:id/reblogged_by
|
|
fn reblogged_by(&self, id: &str) -> Result<Page<Account>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
/// GET /api/v1/statuses/:id/favourited_by
|
|
fn favourited_by(&self, id: &str) -> Result<Page<Account>> {
|
|
{
|
|
::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
|
|
&match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
|
|
&match ()
|
|
{
|
|
()
|
|
=>
|
|
[],
|
|
}),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
};
|
|
}
|
|
}
|
|
}
|
|
/// Handling multiple pages of entities.
|
|
pub mod page {
|
|
use super::{deserialise, Mastodon, Result};
|
|
use hyper_old_types::header::{parsing, Link, RelationType};
|
|
use reqwest::{header::LINK, Response};
|
|
use serde::Deserialize;
|
|
use url::Url;
|
|
macro_rules! pages {
|
|
($ ($ direction : ident : $ fun : ident), *) =>
|
|
{
|
|
$
|
|
(doc_comment !
|
|
(concat !
|
|
("Method to retrieve the ", stringify ! ($ direction),
|
|
" page of results"), pub async fn $ fun(& mut self) -> Result <
|
|
Option < Vec < T >> >
|
|
{
|
|
let url = match self . $ direction . take()
|
|
{ Some(s) => s, None => return Ok(None), } ; let response =
|
|
self . mastodon . send(self . mastodon . client . get(url))
|
|
? ; let(prev, next) = get_links(& response) ? ; self . next
|
|
= next ; self . prev = prev ; deserialise(response)
|
|
}) ;) *
|
|
}
|
|
}
|
|
/// Owned version of the `Page` struct in this module. Allows this to be more
|
|
/// easily stored for later use
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```no_run
|
|
/// # extern crate elefren;
|
|
/// # use elefren::Mastodon;
|
|
/// # use elefren::page::OwnedPage;
|
|
/// # use elefren::entities::status::Status;
|
|
/// # use std::cell::RefCell;
|
|
/// # use elefren::prelude::*;
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// # let data = Data {
|
|
/// # base: "".into(),
|
|
/// # client_id: "".into(),
|
|
/// # client_secret: "".into(),
|
|
/// # redirect: "".into(),
|
|
/// # token: "".into(),
|
|
/// # };
|
|
/// struct HomeTimeline {
|
|
/// client: Mastodon,
|
|
/// page: RefCell<Option<OwnedPage<Status>>>,
|
|
/// }
|
|
/// let client = Mastodon::from(data);
|
|
/// let home = client.get_home_timeline()?.to_owned();
|
|
/// let tl = HomeTimeline {
|
|
/// client,
|
|
/// page: RefCell::new(Some(home)),
|
|
/// };
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub struct OwnedPage<T: for<'de> Deserialize<'de>> {
|
|
mastodon: Mastodon,
|
|
next: Option<Url>,
|
|
prev: Option<Url>,
|
|
/// Initial set of items
|
|
pub initial_items: Vec<T>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl <T: ::core::fmt::Debug + for<'de> Deserialize<'de>>
|
|
::core::fmt::Debug for OwnedPage<T> {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match *self {
|
|
OwnedPage {
|
|
mastodon: ref __self_0_0,
|
|
next: ref __self_0_1,
|
|
prev: ref __self_0_2,
|
|
initial_items: ref __self_0_3 } => {
|
|
let mut debug_trait_builder = f.debug_struct("OwnedPage");
|
|
let _ =
|
|
debug_trait_builder.field("mastodon",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("next", &&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("prev", &&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("initial_items",
|
|
&&(*__self_0_3));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl <T: ::core::clone::Clone + for<'de> Deserialize<'de>>
|
|
::core::clone::Clone for OwnedPage<T> {
|
|
#[inline]
|
|
fn clone(&self) -> OwnedPage<T> {
|
|
match *self {
|
|
OwnedPage {
|
|
mastodon: ref __self_0_0,
|
|
next: ref __self_0_1,
|
|
prev: ref __self_0_2,
|
|
initial_items: ref __self_0_3 } =>
|
|
OwnedPage{mastodon:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
next: ::core::clone::Clone::clone(&(*__self_0_1)),
|
|
prev: ::core::clone::Clone::clone(&(*__self_0_2)),
|
|
initial_items:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),},
|
|
}
|
|
}
|
|
}
|
|
impl <T: for<'de> Deserialize<'de>> OwnedPage<T> {
|
|
#[doc = "Method to retrieve the next page of results"]
|
|
pub async fn next_page(&mut self) -> Result<Option<Vec<T>>> {
|
|
let url =
|
|
match self.next.take() {
|
|
Some(s) => s,
|
|
None => return Ok(None),
|
|
};
|
|
let response = self.mastodon.send(self.mastodon.client.get(url))?;
|
|
let (prev, next) = get_links(&response)?;
|
|
self.next = next;
|
|
self.prev = prev;
|
|
deserialise(response)
|
|
}
|
|
#[doc = "Method to retrieve the prev page of results"]
|
|
pub async fn prev_page(&mut self) -> Result<Option<Vec<T>>> {
|
|
let url =
|
|
match self.prev.take() {
|
|
Some(s) => s,
|
|
None => return Ok(None),
|
|
};
|
|
let response = self.mastodon.send(self.mastodon.client.get(url))?;
|
|
let (prev, next) = get_links(&response)?;
|
|
self.next = next;
|
|
self.prev = prev;
|
|
deserialise(response)
|
|
}
|
|
}
|
|
impl <'a, T: for<'de> Deserialize<'de>> From<Page<'a, T>> for OwnedPage<T>
|
|
{
|
|
fn from(page: Page<'a, T>) -> OwnedPage<T> {
|
|
OwnedPage{mastodon: page.mastodon.clone(),
|
|
next: page.next,
|
|
prev: page.prev,
|
|
initial_items: page.initial_items,}
|
|
}
|
|
}
|
|
/// Represents a single page of API results
|
|
pub struct Page<'a, T: for<'de> Deserialize<'de>> {
|
|
mastodon: &'a Mastodon,
|
|
next: Option<Url>,
|
|
prev: Option<Url>,
|
|
/// Initial set of items
|
|
pub initial_items: Vec<T>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl <'a, T: ::core::fmt::Debug + for<'de> Deserialize<'de>>
|
|
::core::fmt::Debug for Page<'a, T> {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match *self {
|
|
Page {
|
|
mastodon: ref __self_0_0,
|
|
next: ref __self_0_1,
|
|
prev: ref __self_0_2,
|
|
initial_items: ref __self_0_3 } => {
|
|
let mut debug_trait_builder = f.debug_struct("Page");
|
|
let _ =
|
|
debug_trait_builder.field("mastodon",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("next", &&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("prev", &&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("initial_items",
|
|
&&(*__self_0_3));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl <'a, T: ::core::clone::Clone + for<'de> Deserialize<'de>>
|
|
::core::clone::Clone for Page<'a, T> {
|
|
#[inline]
|
|
fn clone(&self) -> Page<'a, T> {
|
|
match *self {
|
|
Page {
|
|
mastodon: ref __self_0_0,
|
|
next: ref __self_0_1,
|
|
prev: ref __self_0_2,
|
|
initial_items: ref __self_0_3 } =>
|
|
Page{mastodon: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
next: ::core::clone::Clone::clone(&(*__self_0_1)),
|
|
prev: ::core::clone::Clone::clone(&(*__self_0_2)),
|
|
initial_items:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),},
|
|
}
|
|
}
|
|
}
|
|
impl <'a, T: for<'de> Deserialize<'de>> Page<'a, T> {
|
|
#[doc = "Method to retrieve the next page of results"]
|
|
pub async fn next_page(&mut self) -> Result<Option<Vec<T>>> {
|
|
let url =
|
|
match self.next.take() {
|
|
Some(s) => s,
|
|
None => return Ok(None),
|
|
};
|
|
let response = self.mastodon.send(self.mastodon.client.get(url))?;
|
|
let (prev, next) = get_links(&response)?;
|
|
self.next = next;
|
|
self.prev = prev;
|
|
deserialise(response)
|
|
}
|
|
#[doc = "Method to retrieve the prev page of results"]
|
|
pub async fn prev_page(&mut self) -> Result<Option<Vec<T>>> {
|
|
let url =
|
|
match self.prev.take() {
|
|
Some(s) => s,
|
|
None => return Ok(None),
|
|
};
|
|
let response = self.mastodon.send(self.mastodon.client.get(url))?;
|
|
let (prev, next) = get_links(&response)?;
|
|
self.next = next;
|
|
self.prev = prev;
|
|
deserialise(response)
|
|
}
|
|
pub(crate) fn new(mastodon: &'a Mastodon, response: Response)
|
|
-> Result<Self> {
|
|
let (prev, next) = get_links(&response)?;
|
|
Ok(Page{initial_items: deserialise(response)?,
|
|
next,
|
|
prev,
|
|
mastodon,})
|
|
}
|
|
}
|
|
impl <'a, T: Clone + for<'de> Deserialize<'de>> Page<'a, T> {
|
|
/// Returns an owned version of this struct that doesn't borrow the client
|
|
/// that created it
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```no_run
|
|
/// # extern crate elefren;
|
|
/// # use elefren::Mastodon;
|
|
/// # use elefren::page::OwnedPage;
|
|
/// # use elefren::entities::status::Status;
|
|
/// # use std::cell::RefCell;
|
|
/// # use elefren::prelude::*;
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// # let data = Data {
|
|
/// # base: "".into(),
|
|
/// # client_id: "".into(),
|
|
/// # client_secret: "".into(),
|
|
/// # redirect: "".into(),
|
|
/// # token: "".into(),
|
|
/// # };
|
|
/// struct HomeTimeline {
|
|
/// client: Mastodon,
|
|
/// page: RefCell<Option<OwnedPage<Status>>>,
|
|
/// }
|
|
/// let client = Mastodon::from(data);
|
|
/// let home = client.get_home_timeline()?.to_owned();
|
|
/// let tl = HomeTimeline {
|
|
/// client,
|
|
/// page: RefCell::new(Some(home)),
|
|
/// };
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn to_owned(self) -> OwnedPage<T> { OwnedPage::from(self) }
|
|
}
|
|
fn get_links(response: &Response) -> Result<(Option<Url>, Option<Url>)> {
|
|
let mut prev = None;
|
|
let mut next = None;
|
|
if let Some(link_header) = response.headers().get(LINK) {
|
|
let link_header = link_header.to_str()?;
|
|
let link_header = link_header.as_bytes();
|
|
let link_header: Link = parsing::from_raw_str(&link_header)?;
|
|
for value in link_header.values() {
|
|
if let Some(relations) = value.rel() {
|
|
if relations.contains(&RelationType::Next) {
|
|
next = Some(Url::parse(value.link())?);
|
|
}
|
|
if relations.contains(&RelationType::Prev) {
|
|
prev = Some(Url::parse(value.link())?);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Ok((prev, next))
|
|
}
|
|
}
|
|
/// Registering your app.
|
|
pub mod registration {
|
|
use std::borrow::Cow;
|
|
use reqwest::{Client, RequestBuilder, Response};
|
|
use try_from::TryInto;
|
|
use url::percent_encoding::{utf8_percent_encode, DEFAULT_ENCODE_SET};
|
|
use crate::apps::{App, AppBuilder};
|
|
use crate::scopes::Scopes;
|
|
use crate::Data;
|
|
use crate::Error;
|
|
use crate::Mastodon;
|
|
use crate::MastodonBuilder;
|
|
use crate::Result;
|
|
const DEFAULT_REDIRECT_URI: &'static str = "urn:ietf:wg:oauth:2.0:oob";
|
|
/// Handles registering your mastodon app to your instance. It is recommended
|
|
/// you cache your data struct to avoid registering on every run.
|
|
pub struct Registration<'a> {
|
|
base: String,
|
|
client: Client,
|
|
app_builder: AppBuilder<'a>,
|
|
force_login: bool,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl <'a> ::core::fmt::Debug for Registration<'a> {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match *self {
|
|
Registration {
|
|
base: ref __self_0_0,
|
|
client: ref __self_0_1,
|
|
app_builder: ref __self_0_2,
|
|
force_login: ref __self_0_3 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Registration");
|
|
let _ =
|
|
debug_trait_builder.field("base", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("client", &&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("app_builder",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("force_login",
|
|
&&(*__self_0_3));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl <'a> ::core::clone::Clone for Registration<'a> {
|
|
#[inline]
|
|
fn clone(&self) -> Registration<'a> {
|
|
match *self {
|
|
Registration {
|
|
base: ref __self_0_0,
|
|
client: ref __self_0_1,
|
|
app_builder: ref __self_0_2,
|
|
force_login: ref __self_0_3 } =>
|
|
Registration{base:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
client:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
app_builder:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
force_login:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),},
|
|
}
|
|
}
|
|
}
|
|
struct OAuth {
|
|
client_id: String,
|
|
client_secret: String,
|
|
#[serde(default = "default_redirect_uri")]
|
|
redirect_uri: String,
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_OAuth: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for OAuth {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field { __field0, __field1, __field2, __ignore, }
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor {
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 => _serde::export::Ok(__Field::__field0),
|
|
1u64 => _serde::export::Ok(__Field::__field1),
|
|
2u64 => _serde::export::Ok(__Field::__field2),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 3")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"client_id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"client_secret" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"redirect_uri" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
_ => { _serde::export::Ok(__Field::__ignore) }
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"client_id" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"client_secret" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"redirect_uri" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
_ => { _serde::export::Ok(__Field::__ignore) }
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<OAuth>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de> {
|
|
type Value = OAuth;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct OAuth")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
-> _serde::export::Result<Self::Value, __A::Error>
|
|
where __A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) => __value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct OAuth with 3 elements"));
|
|
}
|
|
};
|
|
let __field1 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) => __value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
|
|
&"struct OAuth with 3 elements"));
|
|
}
|
|
};
|
|
let __field2 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) => __value,
|
|
_serde::export::None => {
|
|
default_redirect_uri()
|
|
}
|
|
};
|
|
_serde::export::Ok(OAuth{client_id: __field0,
|
|
client_secret: __field1,
|
|
redirect_uri: __field2,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
-> _serde::export::Result<Self::Value, __A::Error>
|
|
where __A: _serde::de::MapAccess<'de> {
|
|
let mut __field0: _serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field1: _serde::export::Option<String> =
|
|
_serde::export::None;
|
|
let mut __field2: _serde::export::Option<String> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("client_id"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field1 => {
|
|
if _serde::export::Option::is_some(&__field1)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("client_secret"));
|
|
}
|
|
__field1 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
__Field::__field2 => {
|
|
if _serde::export::Option::is_some(&__field2)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("redirect_uri"));
|
|
}
|
|
__field2 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) =>
|
|
{
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("client_id")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field1 =
|
|
match __field1 {
|
|
_serde::export::Some(__field1) =>
|
|
__field1,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("client_secret")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
let __field2 =
|
|
match __field2 {
|
|
_serde::export::Some(__field2) =>
|
|
__field2,
|
|
_serde::export::None =>
|
|
default_redirect_uri(),
|
|
};
|
|
_serde::export::Ok(OAuth{client_id: __field0,
|
|
client_secret: __field1,
|
|
redirect_uri: __field2,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] =
|
|
&["client_id", "client_secret", "redirect_uri"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"OAuth", FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<OAuth>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
fn default_redirect_uri() -> String { DEFAULT_REDIRECT_URI.to_string() }
|
|
struct AccessToken {
|
|
access_token: String,
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_AccessToken: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for AccessToken {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field { __field0, __ignore, }
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor {
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"field identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 => _serde::export::Ok(__Field::__field0),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"field index 0 <= i < 1")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"access_token" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
_ => { _serde::export::Ok(__Field::__ignore) }
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"access_token" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
_ => { _serde::export::Ok(__Field::__ignore) }
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<AccessToken>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de> {
|
|
type Value = AccessToken;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"struct AccessToken")
|
|
}
|
|
#[inline]
|
|
fn visit_seq<__A>(self, mut __seq: __A)
|
|
-> _serde::export::Result<Self::Value, __A::Error>
|
|
where __A: _serde::de::SeqAccess<'de> {
|
|
let __field0 =
|
|
match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
_serde::export::Some(__value) => __value,
|
|
_serde::export::None => {
|
|
return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
|
|
&"struct AccessToken with 1 element"));
|
|
}
|
|
};
|
|
_serde::export::Ok(AccessToken{access_token:
|
|
__field0,})
|
|
}
|
|
#[inline]
|
|
fn visit_map<__A>(self, mut __map: __A)
|
|
-> _serde::export::Result<Self::Value, __A::Error>
|
|
where __A: _serde::de::MapAccess<'de> {
|
|
let mut __field0: _serde::export::Option<String> =
|
|
_serde::export::None;
|
|
while let _serde::export::Some(__key) =
|
|
match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
match __key {
|
|
__Field::__field0 => {
|
|
if _serde::export::Option::is_some(&__field0)
|
|
{
|
|
return _serde::export::Err(<__A::Error
|
|
as
|
|
_serde::de::Error>::duplicate_field("access_token"));
|
|
}
|
|
__field0 =
|
|
_serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val)
|
|
=> __val,
|
|
_serde::export::Err(__err)
|
|
=> {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
});
|
|
}
|
|
_ => {
|
|
let _ =
|
|
match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
|
|
{
|
|
_serde::export::Ok(__val) =>
|
|
__val,
|
|
_serde::export::Err(__err) =>
|
|
{
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
let __field0 =
|
|
match __field0 {
|
|
_serde::export::Some(__field0) =>
|
|
__field0,
|
|
_serde::export::None =>
|
|
match _serde::private::de::missing_field("access_token")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
},
|
|
};
|
|
_serde::export::Ok(AccessToken{access_token:
|
|
__field0,})
|
|
}
|
|
}
|
|
const FIELDS: &'static [&'static str] = &["access_token"];
|
|
_serde::Deserializer::deserialize_struct(__deserializer,
|
|
"AccessToken",
|
|
FIELDS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<AccessToken>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
impl <'a> Registration<'a> {
|
|
/// Construct a new registration process to the instance of the `base` url.
|
|
/// ```
|
|
/// use elefren::prelude::*;
|
|
///
|
|
/// let registration = Registration::new("https://mastodon.social");
|
|
/// ```
|
|
pub fn new<I: Into<String>>(base: I) -> Self {
|
|
Registration{base: base.into(),
|
|
client: Client::new(),
|
|
app_builder: AppBuilder::new(),
|
|
force_login: false,}
|
|
}
|
|
}
|
|
impl <'a> Registration<'a> {
|
|
/// Sets the name of this app
|
|
///
|
|
/// This is required, and if this isn't set then the AppBuilder::build
|
|
/// method will fail
|
|
pub fn client_name<I: Into<Cow<'a, str>>>(&mut self, name: I)
|
|
-> &mut Self {
|
|
self.app_builder.client_name(name.into());
|
|
self
|
|
}
|
|
/// Sets the redirect uris that this app uses
|
|
pub fn redirect_uris<I: Into<Cow<'a, str>>>(&mut self, uris: I)
|
|
-> &mut Self {
|
|
self.app_builder.redirect_uris(uris);
|
|
self
|
|
}
|
|
/// Sets the scopes that this app requires
|
|
///
|
|
/// The default for an app is Scopes::Read
|
|
pub fn scopes(&mut self, scopes: Scopes) -> &mut Self {
|
|
self.app_builder.scopes(scopes);
|
|
self
|
|
}
|
|
/// Sets the optional "website" to register the app with
|
|
pub fn website<I: Into<Cow<'a, str>>>(&mut self, website: I)
|
|
-> &mut Self {
|
|
self.app_builder.website(website);
|
|
self
|
|
}
|
|
/// Forces the user to re-login (useful if you need to re-auth as a
|
|
/// different user on the same instance
|
|
pub fn force_login(&mut self, force_login: bool) -> &mut Self {
|
|
self.force_login = force_login;
|
|
self
|
|
}
|
|
fn send(&self, req: RequestBuilder) -> Result<Response> {
|
|
let req = req.build()?;
|
|
Ok(self.client.execute(req)?)
|
|
}
|
|
/// Register the given application
|
|
///
|
|
/// ```no_run
|
|
/// # extern crate elefren;
|
|
/// # fn main () -> elefren::Result<()> {
|
|
/// use elefren::{apps::App, prelude::*};
|
|
///
|
|
/// let mut app = App::builder();
|
|
/// app.client_name("elefren_test");
|
|
///
|
|
/// let registration = Registration::new("https://mastodon.social").register(app)?;
|
|
/// let url = registration.authorize_url()?;
|
|
/// // Here you now need to open the url in the browser
|
|
/// // And handle a the redirect url coming back with the code.
|
|
/// let code = String::from("RETURNED_FROM_BROWSER");
|
|
/// let mastodon = registration.complete(&code)?;
|
|
///
|
|
/// println!("{:?}", mastodon.get_home_timeline()?.initial_items);
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn register<I: TryInto<App>>(&mut self, app: I)
|
|
-> Result<Registered> where Error: From<<I as TryInto<App>>::Err> {
|
|
let app = app.try_into()?;
|
|
let oauth = self.send_app(&app)?;
|
|
Ok(Registered{base: self.base.clone(),
|
|
client: self.client.clone(),
|
|
client_id: oauth.client_id,
|
|
client_secret: oauth.client_secret,
|
|
redirect: oauth.redirect_uri,
|
|
scopes: app.scopes().clone(),
|
|
force_login: self.force_login,})
|
|
}
|
|
/// Register the application with the server from the `base` url.
|
|
///
|
|
/// ```no_run
|
|
/// # extern crate elefren;
|
|
/// # fn main () -> elefren::Result<()> {
|
|
/// use elefren::prelude::*;
|
|
///
|
|
/// let registration = Registration::new("https://mastodon.social")
|
|
/// .client_name("elefren_test")
|
|
/// .build()?;
|
|
/// let url = registration.authorize_url()?;
|
|
/// // Here you now need to open the url in the browser
|
|
/// // And handle a the redirect url coming back with the code.
|
|
/// let code = String::from("RETURNED_FROM_BROWSER");
|
|
/// let mastodon = registration.complete(&code)?;
|
|
///
|
|
/// println!("{:?}", mastodon.get_home_timeline()?.initial_items);
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn build(&mut self) -> Result<Registered> {
|
|
let app: App = self.app_builder.clone().build()?;
|
|
let oauth = self.send_app(&app)?;
|
|
Ok(Registered{base: self.base.clone(),
|
|
client: self.client.clone(),
|
|
client_id: oauth.client_id,
|
|
client_secret: oauth.client_secret,
|
|
redirect: oauth.redirect_uri,
|
|
scopes: app.scopes().clone(),
|
|
force_login: self.force_login,})
|
|
}
|
|
fn send_app(&self, app: &App) -> Result<OAuth> {
|
|
let url =
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
|
|
"/api/v1/apps"],
|
|
&match (&self.base,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
};
|
|
Ok(self.send(self.client.post(&url).json(&app))?.json()?)
|
|
}
|
|
}
|
|
impl Registered {
|
|
/// Skip having to retrieve the client id and secret from the server by
|
|
/// creating a `Registered` struct directly
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```no_run
|
|
/// # extern crate elefren;
|
|
/// # fn main() -> elefren::Result<()> {
|
|
/// use elefren::{prelude::*, registration::Registered};
|
|
///
|
|
/// let registration = Registered::from_parts(
|
|
/// "https://example.com",
|
|
/// "the-client-id",
|
|
/// "the-client-secret",
|
|
/// "https://example.com/redirect",
|
|
/// Scopes::read_all(),
|
|
/// false,
|
|
/// );
|
|
/// let url = registration.authorize_url()?;
|
|
/// // Here you now need to open the url in the browser
|
|
/// // And handle a the redirect url coming back with the code.
|
|
/// let code = String::from("RETURNED_FROM_BROWSER");
|
|
/// let mastodon = registration.complete(&code)?;
|
|
///
|
|
/// println!("{:?}", mastodon.get_home_timeline()?.initial_items);
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn from_parts(base: &str, client_id: &str, client_secret: &str,
|
|
redirect: &str, scopes: Scopes, force_login: bool)
|
|
-> Registered {
|
|
Registered{base: base.to_string(),
|
|
client: Client::new(),
|
|
client_id: client_id.to_string(),
|
|
client_secret: client_secret.to_string(),
|
|
redirect: redirect.to_string(),
|
|
scopes,
|
|
force_login,}
|
|
}
|
|
}
|
|
impl Registered {
|
|
fn send(&self, req: RequestBuilder) -> Result<Response> {
|
|
let req = req.build()?;
|
|
Ok(self.client.execute(req)?)
|
|
}
|
|
/// Returns the parts of the `Registered` struct that can be used to
|
|
/// recreate another `Registered` struct
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::{prelude::*, registration::Registered};
|
|
/// # fn main() -> Result<(), Box<std::error::Error>> {
|
|
///
|
|
/// let origbase = "https://example.social";
|
|
/// let origclient_id = "some-client_id";
|
|
/// let origclient_secret = "some-client-secret";
|
|
/// let origredirect = "https://example.social/redirect";
|
|
/// let origscopes = Scopes::all();
|
|
/// let origforce_login = false;
|
|
///
|
|
/// let registered = Registered::from_parts(
|
|
/// origbase,
|
|
/// origclient_id,
|
|
/// origclient_secret,
|
|
/// origredirect,
|
|
/// origscopes.clone(),
|
|
/// origforce_login,
|
|
/// );
|
|
///
|
|
/// let (base, client_id, client_secret, redirect, scopes, force_login) = registered.into_parts();
|
|
///
|
|
/// assert_eq!(origbase, &base);
|
|
/// assert_eq!(origclient_id, &client_id);
|
|
/// assert_eq!(origclient_secret, &client_secret);
|
|
/// assert_eq!(origredirect, &redirect);
|
|
/// assert_eq!(origscopes, scopes);
|
|
/// assert_eq!(origforce_login, force_login);
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn into_parts(self)
|
|
-> (String, String, String, String, Scopes, bool) {
|
|
(self.base, self.client_id, self.client_secret, self.redirect,
|
|
self.scopes, self.force_login)
|
|
}
|
|
/// Returns the full url needed for authorisation. This needs to be opened
|
|
/// in a browser.
|
|
pub fn authorize_url(&self) -> Result<String> {
|
|
let scopes =
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&[""],
|
|
&match (&self.scopes,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
};
|
|
let scopes: String =
|
|
utf8_percent_encode(&scopes, DEFAULT_ENCODE_SET).collect();
|
|
let url =
|
|
if self.force_login {
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
|
|
"/oauth/authorize?client_id=",
|
|
"&redirect_uri=",
|
|
"&scope=",
|
|
"&force_login=true&response_type=code"],
|
|
&match (&self.base,
|
|
&self.client_id,
|
|
&self.redirect,
|
|
&scopes)
|
|
{
|
|
(arg0,
|
|
arg1,
|
|
arg2,
|
|
arg3)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg1,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg2,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg3,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}
|
|
} else {
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
|
|
"/oauth/authorize?client_id=",
|
|
"&redirect_uri=",
|
|
"&scope=",
|
|
"&response_type=code"],
|
|
&match (&self.base,
|
|
&self.client_id,
|
|
&self.redirect,
|
|
&scopes)
|
|
{
|
|
(arg0,
|
|
arg1,
|
|
arg2,
|
|
arg3)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg1,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg2,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg3,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}
|
|
};
|
|
Ok(url)
|
|
}
|
|
/// Create an access token from the client id, client secret, and code
|
|
/// provided by the authorisation url.
|
|
pub fn complete(&self, code: &str) -> Result<Mastodon> {
|
|
let url =
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
|
|
"/oauth/token?client_id=",
|
|
"&client_secret=",
|
|
"&code=",
|
|
"&grant_type=authorization_code&redirect_uri="],
|
|
&match (&self.base,
|
|
&self.client_id,
|
|
&self.client_secret,
|
|
&code,
|
|
&self.redirect)
|
|
{
|
|
(arg0,
|
|
arg1,
|
|
arg2,
|
|
arg3,
|
|
arg4)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg1,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg2,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg3,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg4,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
};
|
|
let token: AccessToken =
|
|
self.send(self.client.post(&url))?.json()?;
|
|
let data =
|
|
Data{base: self.base.clone().into(),
|
|
client_id: self.client_id.clone().into(),
|
|
client_secret: self.client_secret.clone().into(),
|
|
redirect: self.redirect.clone().into(),
|
|
token: token.access_token.into(),};
|
|
let mut builder = MastodonBuilder::new();
|
|
builder.client(self.client.clone()).data(data);
|
|
Ok(builder.build()?)
|
|
}
|
|
}
|
|
/// Represents the state of the auth flow when the app has been registered but
|
|
/// the user is not authenticated
|
|
pub struct Registered {
|
|
base: String,
|
|
client: Client,
|
|
client_id: String,
|
|
client_secret: String,
|
|
redirect: String,
|
|
scopes: Scopes,
|
|
force_login: bool,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Registered {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match *self {
|
|
Registered {
|
|
base: ref __self_0_0,
|
|
client: ref __self_0_1,
|
|
client_id: ref __self_0_2,
|
|
client_secret: ref __self_0_3,
|
|
redirect: ref __self_0_4,
|
|
scopes: ref __self_0_5,
|
|
force_login: ref __self_0_6 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("Registered");
|
|
let _ =
|
|
debug_trait_builder.field("base", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("client", &&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("client_id",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("client_secret",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("redirect",
|
|
&&(*__self_0_4));
|
|
let _ =
|
|
debug_trait_builder.field("scopes", &&(*__self_0_5));
|
|
let _ =
|
|
debug_trait_builder.field("force_login",
|
|
&&(*__self_0_6));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Registered {
|
|
#[inline]
|
|
fn clone(&self) -> Registered {
|
|
match *self {
|
|
Registered {
|
|
base: ref __self_0_0,
|
|
client: ref __self_0_1,
|
|
client_id: ref __self_0_2,
|
|
client_secret: ref __self_0_3,
|
|
redirect: ref __self_0_4,
|
|
scopes: ref __self_0_5,
|
|
force_login: ref __self_0_6 } =>
|
|
Registered{base: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
client:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
client_id:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
client_secret:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
redirect:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),
|
|
scopes:
|
|
::core::clone::Clone::clone(&(*__self_0_5)),
|
|
force_login:
|
|
::core::clone::Clone::clone(&(*__self_0_6)),},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// Requests
|
|
pub mod requests {
|
|
/// Data structure for the MastodonClient::add_filter method
|
|
pub use self::filter::AddFilterRequest;
|
|
/// Data structure for the MastodonClient::add_push_subscription method
|
|
pub use self::push::{AddPushRequest, Keys, UpdatePushRequest};
|
|
/// Data structure for the MastodonClient::statuses method
|
|
pub use self::statuses::StatusesRequest;
|
|
/// Data structure for the MastodonClient::update_credentials method
|
|
pub use self::update_credentials::UpdateCredsRequest;
|
|
mod filter {
|
|
use crate::entities::filter::FilterContext;
|
|
use std::time::Duration;
|
|
/// Form used to create a filter
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use std::error::Error;
|
|
/// use elefren::{entities::filter::FilterContext, requests::AddFilterRequest};
|
|
/// # fn main() -> Result<(), Box<Error>> {
|
|
/// let request = AddFilterRequest::new("foo", FilterContext::Home);
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub struct AddFilterRequest {
|
|
phrase: String,
|
|
context: FilterContext,
|
|
irreversible: Option<bool>,
|
|
whole_word: Option<bool>,
|
|
#[serde(serialize_with = "serialize_duration::ser")]
|
|
expires_in: Option<Duration>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for AddFilterRequest {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
AddFilterRequest {
|
|
phrase: ref __self_0_0,
|
|
context: ref __self_0_1,
|
|
irreversible: ref __self_0_2,
|
|
whole_word: ref __self_0_3,
|
|
expires_in: ref __self_0_4 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("AddFilterRequest");
|
|
let _ =
|
|
debug_trait_builder.field("phrase",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("context",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("irreversible",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("whole_word",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("expires_in",
|
|
&&(*__self_0_4));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for AddFilterRequest {
|
|
#[inline]
|
|
fn clone(&self) -> AddFilterRequest {
|
|
match *self {
|
|
AddFilterRequest {
|
|
phrase: ref __self_0_0,
|
|
context: ref __self_0_1,
|
|
irreversible: ref __self_0_2,
|
|
whole_word: ref __self_0_3,
|
|
expires_in: ref __self_0_4 } =>
|
|
AddFilterRequest{phrase:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
context:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
irreversible:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
whole_word:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
expires_in:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for AddFilterRequest { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for AddFilterRequest {
|
|
#[inline]
|
|
fn eq(&self, other: &AddFilterRequest) -> bool {
|
|
match *other {
|
|
AddFilterRequest {
|
|
phrase: ref __self_1_0,
|
|
context: ref __self_1_1,
|
|
irreversible: ref __self_1_2,
|
|
whole_word: ref __self_1_3,
|
|
expires_in: ref __self_1_4 } =>
|
|
match *self {
|
|
AddFilterRequest {
|
|
phrase: ref __self_0_0,
|
|
context: ref __self_0_1,
|
|
irreversible: ref __self_0_2,
|
|
whole_word: ref __self_0_3,
|
|
expires_in: ref __self_0_4 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &AddFilterRequest) -> bool {
|
|
match *other {
|
|
AddFilterRequest {
|
|
phrase: ref __self_1_0,
|
|
context: ref __self_1_1,
|
|
irreversible: ref __self_1_2,
|
|
whole_word: ref __self_1_3,
|
|
expires_in: ref __self_1_4 } =>
|
|
match *self {
|
|
AddFilterRequest {
|
|
phrase: ref __self_0_0,
|
|
context: ref __self_0_1,
|
|
irreversible: ref __self_0_2,
|
|
whole_word: ref __self_0_3,
|
|
expires_in: ref __self_0_4 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_AddFilterRequest: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for AddFilterRequest {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"AddFilterRequest",
|
|
false
|
|
as
|
|
usize
|
|
+ 1
|
|
+ 1
|
|
+ 1
|
|
+ 1
|
|
+
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"phrase",
|
|
&self.phrase)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"context",
|
|
&self.context)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"irreversible",
|
|
&self.irreversible)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"whole_word",
|
|
&self.whole_word)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"expires_in",
|
|
{
|
|
struct __SerializeWith<'__a> {
|
|
values: (&'__a Option<Duration>,),
|
|
phantom: _serde::export::PhantomData<AddFilterRequest>,
|
|
}
|
|
impl <'__a>
|
|
_serde::Serialize
|
|
for
|
|
__SerializeWith<'__a>
|
|
{
|
|
fn serialize<__S>(&self,
|
|
__s:
|
|
__S)
|
|
->
|
|
_serde::export::Result<__S::Ok,
|
|
__S::Error>
|
|
where
|
|
__S: _serde::Serializer {
|
|
serialize_duration::ser(self.values.0,
|
|
__s)
|
|
}
|
|
}
|
|
&__SerializeWith{values:
|
|
(&self.expires_in,),
|
|
phantom:
|
|
_serde::export::PhantomData::<AddFilterRequest>,}
|
|
})
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
impl AddFilterRequest {
|
|
/// Create a new AddFilterRequest
|
|
pub fn new(phrase: &str, context: FilterContext)
|
|
-> AddFilterRequest {
|
|
AddFilterRequest{phrase: phrase.to_string(),
|
|
context,
|
|
irreversible: None,
|
|
whole_word: None,
|
|
expires_in: None,}
|
|
}
|
|
/// Set `irreversible` to `true`
|
|
pub fn irreversible(&mut self) -> &mut Self {
|
|
self.irreversible = Some(true);
|
|
self
|
|
}
|
|
/// Set `whole_word` to `true`
|
|
pub fn whole_word(&mut self) -> &mut Self {
|
|
self.whole_word = Some(true);
|
|
self
|
|
}
|
|
/// Set `expires_in` to a duration
|
|
pub fn expires_in(&mut self, d: Duration) -> &mut Self {
|
|
self.expires_in = Some(d);
|
|
self
|
|
}
|
|
}
|
|
mod serialize_duration {
|
|
use serde::ser::Serializer;
|
|
use std::time::Duration;
|
|
pub(crate) fn ser<S>(duration: &Option<Duration>, s: S)
|
|
-> Result<S::Ok, S::Error> where S: Serializer {
|
|
if let Some(d) = duration {
|
|
let sec = d.as_secs();
|
|
s.serialize_u64(sec)
|
|
} else { s.serialize_none() }
|
|
}
|
|
}
|
|
}
|
|
mod push {
|
|
use crate::entities::push::{add_subscription, update_data};
|
|
use crate::errors::Result;
|
|
/// Container for the key & auth strings for an AddPushRequest
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::requests::Keys;
|
|
///
|
|
/// let keys = Keys::new("anetohias===", "oeatssah=");
|
|
/// ```
|
|
pub struct Keys {
|
|
pub(crate) p256dh: String,
|
|
pub(crate) auth: String,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Keys {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
Keys { p256dh: ref __self_0_0, auth: ref __self_0_1 } => {
|
|
let mut debug_trait_builder = f.debug_struct("Keys");
|
|
let _ =
|
|
debug_trait_builder.field("p256dh",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("auth",
|
|
&&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for Keys {
|
|
#[inline]
|
|
fn default() -> Keys {
|
|
Keys{p256dh: ::core::default::Default::default(),
|
|
auth: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Keys {
|
|
#[inline]
|
|
fn clone(&self) -> Keys {
|
|
match *self {
|
|
Keys { p256dh: ref __self_0_0, auth: ref __self_0_1 } =>
|
|
Keys{p256dh: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
auth: ::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for Keys { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Keys {
|
|
#[inline]
|
|
fn eq(&self, other: &Keys) -> bool {
|
|
match *other {
|
|
Keys { p256dh: ref __self_1_0, auth: ref __self_1_1 } =>
|
|
match *self {
|
|
Keys { p256dh: ref __self_0_0, auth: ref __self_0_1 }
|
|
=>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Keys) -> bool {
|
|
match *other {
|
|
Keys { p256dh: ref __self_1_0, auth: ref __self_1_1 } =>
|
|
match *self {
|
|
Keys { p256dh: ref __self_0_0, auth: ref __self_0_1 }
|
|
=>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
impl Keys {
|
|
/// Create the `Keys` container
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::requests::Keys;
|
|
///
|
|
/// let keys = Keys::new("anetohias===", "oeatssah=");
|
|
/// ```
|
|
pub fn new(p256dh: &str, auth: &str) -> Keys {
|
|
Keys{p256dh: p256dh.to_string(), auth: auth.to_string(),}
|
|
}
|
|
}
|
|
/// Builder to pass to the Mastodon::add_push_subscription method
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```no_run
|
|
/// # extern crate elefren;
|
|
/// # use elefren::{MastodonClient, Mastodon, Data};
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// # let data = Data {
|
|
/// # base: "".into(),
|
|
/// # client_id: "".into(),
|
|
/// # client_secret: "".into(),
|
|
/// # redirect: "".into(),
|
|
/// # token: "".into(),
|
|
/// # };
|
|
/// use elefren::requests::{AddPushRequest, Keys};
|
|
///
|
|
/// let client = Mastodon::from(data);
|
|
///
|
|
/// let keys = Keys::new("stahesuahoei293ise===", "tasecoa,nmeozka==");
|
|
/// let mut request = AddPushRequest::new("http://example.com/push/endpoint", &keys);
|
|
/// request.follow().reblog();
|
|
///
|
|
/// client.add_push_subscription(&request)?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub struct AddPushRequest {
|
|
endpoint: String,
|
|
p256dh: String,
|
|
auth: String,
|
|
follow: Option<bool>,
|
|
favourite: Option<bool>,
|
|
reblog: Option<bool>,
|
|
mention: Option<bool>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for AddPushRequest {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
AddPushRequest {
|
|
endpoint: ref __self_0_0,
|
|
p256dh: ref __self_0_1,
|
|
auth: ref __self_0_2,
|
|
follow: ref __self_0_3,
|
|
favourite: ref __self_0_4,
|
|
reblog: ref __self_0_5,
|
|
mention: ref __self_0_6 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("AddPushRequest");
|
|
let _ =
|
|
debug_trait_builder.field("endpoint",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("p256dh",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("auth",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("follow",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("favourite",
|
|
&&(*__self_0_4));
|
|
let _ =
|
|
debug_trait_builder.field("reblog",
|
|
&&(*__self_0_5));
|
|
let _ =
|
|
debug_trait_builder.field("mention",
|
|
&&(*__self_0_6));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for AddPushRequest {
|
|
#[inline]
|
|
fn default() -> AddPushRequest {
|
|
AddPushRequest{endpoint: ::core::default::Default::default(),
|
|
p256dh: ::core::default::Default::default(),
|
|
auth: ::core::default::Default::default(),
|
|
follow: ::core::default::Default::default(),
|
|
favourite: ::core::default::Default::default(),
|
|
reblog: ::core::default::Default::default(),
|
|
mention: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for AddPushRequest {
|
|
#[inline]
|
|
fn clone(&self) -> AddPushRequest {
|
|
match *self {
|
|
AddPushRequest {
|
|
endpoint: ref __self_0_0,
|
|
p256dh: ref __self_0_1,
|
|
auth: ref __self_0_2,
|
|
follow: ref __self_0_3,
|
|
favourite: ref __self_0_4,
|
|
reblog: ref __self_0_5,
|
|
mention: ref __self_0_6 } =>
|
|
AddPushRequest{endpoint:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
p256dh:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
auth:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
follow:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
favourite:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),
|
|
reblog:
|
|
::core::clone::Clone::clone(&(*__self_0_5)),
|
|
mention:
|
|
::core::clone::Clone::clone(&(*__self_0_6)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for AddPushRequest { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for AddPushRequest {
|
|
#[inline]
|
|
fn eq(&self, other: &AddPushRequest) -> bool {
|
|
match *other {
|
|
AddPushRequest {
|
|
endpoint: ref __self_1_0,
|
|
p256dh: ref __self_1_1,
|
|
auth: ref __self_1_2,
|
|
follow: ref __self_1_3,
|
|
favourite: ref __self_1_4,
|
|
reblog: ref __self_1_5,
|
|
mention: ref __self_1_6 } =>
|
|
match *self {
|
|
AddPushRequest {
|
|
endpoint: ref __self_0_0,
|
|
p256dh: ref __self_0_1,
|
|
auth: ref __self_0_2,
|
|
follow: ref __self_0_3,
|
|
favourite: ref __self_0_4,
|
|
reblog: ref __self_0_5,
|
|
mention: ref __self_0_6 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4) &&
|
|
(*__self_0_5) == (*__self_1_5) &&
|
|
(*__self_0_6) == (*__self_1_6),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &AddPushRequest) -> bool {
|
|
match *other {
|
|
AddPushRequest {
|
|
endpoint: ref __self_1_0,
|
|
p256dh: ref __self_1_1,
|
|
auth: ref __self_1_2,
|
|
follow: ref __self_1_3,
|
|
favourite: ref __self_1_4,
|
|
reblog: ref __self_1_5,
|
|
mention: ref __self_1_6 } =>
|
|
match *self {
|
|
AddPushRequest {
|
|
endpoint: ref __self_0_0,
|
|
p256dh: ref __self_0_1,
|
|
auth: ref __self_0_2,
|
|
follow: ref __self_0_3,
|
|
favourite: ref __self_0_4,
|
|
reblog: ref __self_0_5,
|
|
mention: ref __self_0_6 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4) ||
|
|
(*__self_0_5) != (*__self_1_5) ||
|
|
(*__self_0_6) != (*__self_1_6),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
impl AddPushRequest {
|
|
/// Construct a new AddPushRequest
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::requests::{AddPushRequest, Keys};
|
|
/// let keys = Keys::new("abcdef===", "foobar==");
|
|
/// let push_endpoint = "https://example.com/push/endpoint";
|
|
/// let request = AddPushRequest::new(push_endpoint, &keys);
|
|
/// ```
|
|
pub fn new(endpoint: &str, keys: &Keys) -> AddPushRequest {
|
|
AddPushRequest{endpoint: endpoint.to_string(),
|
|
p256dh: keys.p256dh.clone(),
|
|
auth: keys.auth.clone(), ..Default::default()}
|
|
}
|
|
/// A flag that indicates if you want follow notifications pushed
|
|
///
|
|
/// # Example
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::requests::{AddPushRequest, Keys};
|
|
/// let keys = Keys::new("abcdef===", "foobar==");
|
|
/// let push_endpoint = "https://example.com/push/endpoint";
|
|
/// let mut request = AddPushRequest::new(push_endpoint, &keys);
|
|
/// request.follow();
|
|
/// ```
|
|
pub fn follow(&mut self) -> &mut Self {
|
|
self.follow = Some(true);
|
|
self
|
|
}
|
|
/// A flag that indicates if you want favourite notifications pushed
|
|
///
|
|
/// # Example
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::requests::{AddPushRequest, Keys};
|
|
/// let keys = Keys::new("abcdef===", "foobar==");
|
|
/// let push_endpoint = "https://example.com/push/endpoint";
|
|
/// let mut request = AddPushRequest::new(push_endpoint, &keys);
|
|
/// request.favourite();
|
|
/// ```
|
|
pub fn favourite(&mut self) -> &mut Self {
|
|
self.favourite = Some(true);
|
|
self
|
|
}
|
|
/// A flag that indicates if you want reblog notifications pushed
|
|
///
|
|
/// # Example
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::requests::{AddPushRequest, Keys};
|
|
/// let keys = Keys::new("abcdef===", "foobar==");
|
|
/// let push_endpoint = "https://example.com/push/endpoint";
|
|
/// let mut request = AddPushRequest::new(push_endpoint, &keys);
|
|
/// request.reblog();
|
|
/// ```
|
|
pub fn reblog(&mut self) -> &mut Self {
|
|
self.reblog = Some(true);
|
|
self
|
|
}
|
|
/// A flag that indicates if you want mention notifications pushed
|
|
///
|
|
/// # Example
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::requests::{AddPushRequest, Keys};
|
|
/// let keys = Keys::new("abcdef===", "foobar==");
|
|
/// let push_endpoint = "https://example.com/push/endpoint";
|
|
/// let mut request = AddPushRequest::new(push_endpoint, &keys);
|
|
/// request.mention();
|
|
/// ```
|
|
pub fn mention(&mut self) -> &mut Self {
|
|
self.mention = Some(true);
|
|
self
|
|
}
|
|
fn flags_present(&self) -> bool {
|
|
self.follow.is_some() || self.favourite.is_some() ||
|
|
self.reblog.is_some() || self.mention.is_some()
|
|
}
|
|
pub(crate) fn build(&self) -> Result<add_subscription::Form> {
|
|
use crate::entities::push::{add_subscription::{Data, Form,
|
|
Keys,
|
|
Subscription},
|
|
Alerts};
|
|
let mut form =
|
|
Form{subscription:
|
|
Subscription{endpoint: self.endpoint.clone(),
|
|
keys:
|
|
Keys{p256dh:
|
|
self.p256dh.clone(),
|
|
auth:
|
|
self.auth.clone(),},},
|
|
data: None,};
|
|
if self.flags_present() {
|
|
let mut alerts = Alerts::default();
|
|
if let Some(follow) = self.follow {
|
|
alerts.follow = Some(follow);
|
|
}
|
|
if let Some(favourite) = self.favourite {
|
|
alerts.favourite = Some(favourite);
|
|
}
|
|
if let Some(reblog) = self.reblog {
|
|
alerts.reblog = Some(reblog);
|
|
}
|
|
if let Some(mention) = self.mention {
|
|
alerts.mention = Some(mention);
|
|
}
|
|
form.data = Some(Data{alerts: Some(alerts),});
|
|
}
|
|
Ok(form)
|
|
}
|
|
}
|
|
/// Builder to pass to the Mastodon::update_push_data method
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```no_run
|
|
/// # extern crate elefren;
|
|
/// # use elefren::{MastodonClient, Mastodon, Data};
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// # let data = Data {
|
|
/// # base: "".into(),
|
|
/// # client_id: "".into(),
|
|
/// # client_secret: "".into(),
|
|
/// # redirect: "".into(),
|
|
/// # token: "".into(),
|
|
/// # };
|
|
/// use elefren::requests::UpdatePushRequest;
|
|
///
|
|
/// let client = Mastodon::from(data);
|
|
///
|
|
/// let mut request = UpdatePushRequest::new("foobar");
|
|
/// request.follow(true).reblog(true);
|
|
///
|
|
/// client.update_push_data(&request)?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub struct UpdatePushRequest {
|
|
id: String,
|
|
follow: Option<bool>,
|
|
favourite: Option<bool>,
|
|
reblog: Option<bool>,
|
|
mention: Option<bool>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for UpdatePushRequest {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
UpdatePushRequest {
|
|
id: ref __self_0_0,
|
|
follow: ref __self_0_1,
|
|
favourite: ref __self_0_2,
|
|
reblog: ref __self_0_3,
|
|
mention: ref __self_0_4 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("UpdatePushRequest");
|
|
let _ =
|
|
debug_trait_builder.field("id", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("follow",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("favourite",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("reblog",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("mention",
|
|
&&(*__self_0_4));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for UpdatePushRequest {
|
|
#[inline]
|
|
fn default() -> UpdatePushRequest {
|
|
UpdatePushRequest{id: ::core::default::Default::default(),
|
|
follow: ::core::default::Default::default(),
|
|
favourite:
|
|
::core::default::Default::default(),
|
|
reblog: ::core::default::Default::default(),
|
|
mention:
|
|
::core::default::Default::default(),}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for UpdatePushRequest {
|
|
#[inline]
|
|
fn clone(&self) -> UpdatePushRequest {
|
|
match *self {
|
|
UpdatePushRequest {
|
|
id: ref __self_0_0,
|
|
follow: ref __self_0_1,
|
|
favourite: ref __self_0_2,
|
|
reblog: ref __self_0_3,
|
|
mention: ref __self_0_4 } =>
|
|
UpdatePushRequest{id:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
follow:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
favourite:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
reblog:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
mention:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for UpdatePushRequest { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for UpdatePushRequest {
|
|
#[inline]
|
|
fn eq(&self, other: &UpdatePushRequest) -> bool {
|
|
match *other {
|
|
UpdatePushRequest {
|
|
id: ref __self_1_0,
|
|
follow: ref __self_1_1,
|
|
favourite: ref __self_1_2,
|
|
reblog: ref __self_1_3,
|
|
mention: ref __self_1_4 } =>
|
|
match *self {
|
|
UpdatePushRequest {
|
|
id: ref __self_0_0,
|
|
follow: ref __self_0_1,
|
|
favourite: ref __self_0_2,
|
|
reblog: ref __self_0_3,
|
|
mention: ref __self_0_4 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &UpdatePushRequest) -> bool {
|
|
match *other {
|
|
UpdatePushRequest {
|
|
id: ref __self_1_0,
|
|
follow: ref __self_1_1,
|
|
favourite: ref __self_1_2,
|
|
reblog: ref __self_1_3,
|
|
mention: ref __self_1_4 } =>
|
|
match *self {
|
|
UpdatePushRequest {
|
|
id: ref __self_0_0,
|
|
follow: ref __self_0_1,
|
|
favourite: ref __self_0_2,
|
|
reblog: ref __self_0_3,
|
|
mention: ref __self_0_4 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_UpdatePushRequest: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for UpdatePushRequest {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"UpdatePushRequest",
|
|
false
|
|
as
|
|
usize
|
|
+ 1
|
|
+ 1
|
|
+ 1
|
|
+ 1
|
|
+
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"id",
|
|
&self.id)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"follow",
|
|
&self.follow)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"favourite",
|
|
&self.favourite)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"reblog",
|
|
&self.reblog)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"mention",
|
|
&self.mention)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
impl UpdatePushRequest {
|
|
/// Construct a new UpdatePushRequest
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::requests::UpdatePushRequest;
|
|
/// let request = UpdatePushRequest::new("some-id");
|
|
/// ```
|
|
pub fn new(id: &str) -> UpdatePushRequest {
|
|
UpdatePushRequest{id: id.to_string(), ..Default::default()}
|
|
}
|
|
/// A flag that indicates if you want follow notifications pushed
|
|
///
|
|
/// # Example
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::requests::UpdatePushRequest;
|
|
/// let mut request = UpdatePushRequest::new("foobar");
|
|
/// request.follow(true);
|
|
/// ```
|
|
pub fn follow(&mut self, follow: bool) -> &mut Self {
|
|
self.follow = Some(follow);
|
|
self
|
|
}
|
|
/// A flag that indicates if you want favourite notifications pushed
|
|
///
|
|
/// # Example
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::requests::UpdatePushRequest;
|
|
/// let mut request = UpdatePushRequest::new("foobar");
|
|
/// request.favourite(true);
|
|
/// ```
|
|
pub fn favourite(&mut self, favourite: bool) -> &mut Self {
|
|
self.favourite = Some(favourite);
|
|
self
|
|
}
|
|
/// A flag that indicates if you want reblog notifications pushed
|
|
///
|
|
/// # Example
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::requests::UpdatePushRequest;
|
|
/// let mut request = UpdatePushRequest::new("foobar");
|
|
/// request.reblog(true);
|
|
/// ```
|
|
pub fn reblog(&mut self, reblog: bool) -> &mut Self {
|
|
self.reblog = Some(reblog);
|
|
self
|
|
}
|
|
/// A flag that indicates if you want mention notifications pushed
|
|
///
|
|
/// # Example
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::requests::UpdatePushRequest;
|
|
/// let mut request = UpdatePushRequest::new("foobar");
|
|
/// request.mention(true);
|
|
/// ```
|
|
pub fn mention(&mut self, mention: bool) -> &mut Self {
|
|
self.mention = Some(mention);
|
|
self
|
|
}
|
|
fn flags_present(&self) -> bool {
|
|
self.follow.is_some() || self.favourite.is_some() ||
|
|
self.reblog.is_some() || self.mention.is_some()
|
|
}
|
|
pub(crate) fn build(&self) -> update_data::Form {
|
|
use crate::entities::push::{update_data::{Data, Form},
|
|
Alerts};
|
|
let mut form =
|
|
Form{id: self.id.clone(), ..Default::default()};
|
|
if self.flags_present() {
|
|
let mut alerts = Alerts::default();
|
|
if let Some(follow) = self.follow {
|
|
alerts.follow = Some(follow);
|
|
}
|
|
if let Some(favourite) = self.favourite {
|
|
alerts.favourite = Some(favourite);
|
|
}
|
|
if let Some(reblog) = self.reblog {
|
|
alerts.reblog = Some(reblog);
|
|
}
|
|
if let Some(mention) = self.mention {
|
|
alerts.mention = Some(mention);
|
|
}
|
|
form.data = Data{alerts: Some(alerts),};
|
|
}
|
|
form
|
|
}
|
|
}
|
|
}
|
|
mod statuses {
|
|
use crate::errors::Error;
|
|
use serde_qs;
|
|
use std::{borrow::Cow, convert::Into};
|
|
mod bool_qs_serialize {
|
|
use serde::Serializer;
|
|
pub fn is_false(b: &bool) -> bool { !*b }
|
|
pub fn serialize<S: Serializer>(b: &bool, s: S)
|
|
-> Result<S::Ok, S::Error> {
|
|
if *b { s.serialize_i64(1) } else { s.serialize_i64(0) }
|
|
}
|
|
}
|
|
/// Builder for making a client.statuses() call
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use elefren::StatusesRequest;
|
|
/// let mut request = StatusesRequest::new();
|
|
/// request.only_media().pinned().since_id("foo");
|
|
/// # assert_eq!(&request.to_querystring().expect("Couldn't serialize qs")[..], "?only_media=1&pinned=1&since_id=foo");
|
|
/// ```
|
|
pub struct StatusesRequest<'a> {
|
|
#[serde(skip_serializing_if = "bool_qs_serialize::is_false")]
|
|
#[serde(serialize_with = "bool_qs_serialize::serialize")]
|
|
only_media: bool,
|
|
#[serde(skip_serializing_if = "bool_qs_serialize::is_false")]
|
|
#[serde(serialize_with = "bool_qs_serialize::serialize")]
|
|
exclude_replies: bool,
|
|
#[serde(skip_serializing_if = "bool_qs_serialize::is_false")]
|
|
#[serde(serialize_with = "bool_qs_serialize::serialize")]
|
|
pinned: bool,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
max_id: Option<Cow<'a, str>>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
since_id: Option<Cow<'a, str>>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
limit: Option<usize>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
min_id: Option<Cow<'a, str>>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl <'a> ::core::clone::Clone for StatusesRequest<'a> {
|
|
#[inline]
|
|
fn clone(&self) -> StatusesRequest<'a> {
|
|
match *self {
|
|
StatusesRequest {
|
|
only_media: ref __self_0_0,
|
|
exclude_replies: ref __self_0_1,
|
|
pinned: ref __self_0_2,
|
|
max_id: ref __self_0_3,
|
|
since_id: ref __self_0_4,
|
|
limit: ref __self_0_5,
|
|
min_id: ref __self_0_6 } =>
|
|
StatusesRequest{only_media:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
exclude_replies:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
pinned:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
max_id:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
since_id:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),
|
|
limit:
|
|
::core::clone::Clone::clone(&(*__self_0_5)),
|
|
min_id:
|
|
::core::clone::Clone::clone(&(*__self_0_6)),},
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl <'a> ::core::fmt::Debug for StatusesRequest<'a> {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
StatusesRequest {
|
|
only_media: ref __self_0_0,
|
|
exclude_replies: ref __self_0_1,
|
|
pinned: ref __self_0_2,
|
|
max_id: ref __self_0_3,
|
|
since_id: ref __self_0_4,
|
|
limit: ref __self_0_5,
|
|
min_id: ref __self_0_6 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("StatusesRequest");
|
|
let _ =
|
|
debug_trait_builder.field("only_media",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("exclude_replies",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("pinned",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("max_id",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("since_id",
|
|
&&(*__self_0_4));
|
|
let _ =
|
|
debug_trait_builder.field("limit",
|
|
&&(*__self_0_5));
|
|
let _ =
|
|
debug_trait_builder.field("min_id",
|
|
&&(*__self_0_6));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl <'a> ::core::default::Default for StatusesRequest<'a> {
|
|
#[inline]
|
|
fn default() -> StatusesRequest<'a> {
|
|
StatusesRequest{only_media:
|
|
::core::default::Default::default(),
|
|
exclude_replies:
|
|
::core::default::Default::default(),
|
|
pinned: ::core::default::Default::default(),
|
|
max_id: ::core::default::Default::default(),
|
|
since_id: ::core::default::Default::default(),
|
|
limit: ::core::default::Default::default(),
|
|
min_id: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
impl <'a> ::core::marker::StructuralPartialEq for StatusesRequest<'a>
|
|
{
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl <'a> ::core::cmp::PartialEq for StatusesRequest<'a> {
|
|
#[inline]
|
|
fn eq(&self, other: &StatusesRequest<'a>) -> bool {
|
|
match *other {
|
|
StatusesRequest {
|
|
only_media: ref __self_1_0,
|
|
exclude_replies: ref __self_1_1,
|
|
pinned: ref __self_1_2,
|
|
max_id: ref __self_1_3,
|
|
since_id: ref __self_1_4,
|
|
limit: ref __self_1_5,
|
|
min_id: ref __self_1_6 } =>
|
|
match *self {
|
|
StatusesRequest {
|
|
only_media: ref __self_0_0,
|
|
exclude_replies: ref __self_0_1,
|
|
pinned: ref __self_0_2,
|
|
max_id: ref __self_0_3,
|
|
since_id: ref __self_0_4,
|
|
limit: ref __self_0_5,
|
|
min_id: ref __self_0_6 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4) &&
|
|
(*__self_0_5) == (*__self_1_5) &&
|
|
(*__self_0_6) == (*__self_1_6),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &StatusesRequest<'a>) -> bool {
|
|
match *other {
|
|
StatusesRequest {
|
|
only_media: ref __self_1_0,
|
|
exclude_replies: ref __self_1_1,
|
|
pinned: ref __self_1_2,
|
|
max_id: ref __self_1_3,
|
|
since_id: ref __self_1_4,
|
|
limit: ref __self_1_5,
|
|
min_id: ref __self_1_6 } =>
|
|
match *self {
|
|
StatusesRequest {
|
|
only_media: ref __self_0_0,
|
|
exclude_replies: ref __self_0_1,
|
|
pinned: ref __self_0_2,
|
|
max_id: ref __self_0_3,
|
|
since_id: ref __self_0_4,
|
|
limit: ref __self_0_5,
|
|
min_id: ref __self_0_6 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4) ||
|
|
(*__self_0_5) != (*__self_1_5) ||
|
|
(*__self_0_6) != (*__self_1_6),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_StatusesRequest: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'a> _serde::Serialize for StatusesRequest<'a> {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"StatusesRequest",
|
|
false
|
|
as
|
|
usize
|
|
+
|
|
if bool_qs_serialize::is_false(&self.only_media)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if bool_qs_serialize::is_false(&self.exclude_replies)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if bool_qs_serialize::is_false(&self.pinned)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.max_id)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.since_id)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.limit)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.min_id)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
})
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
if !bool_qs_serialize::is_false(&self.only_media) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"only_media",
|
|
{
|
|
struct __SerializeWith<'__a,
|
|
'a: '__a> {
|
|
values: (&'__a bool,),
|
|
phantom: _serde::export::PhantomData<StatusesRequest<'a>>,
|
|
}
|
|
impl <'__a,
|
|
'a: '__a>
|
|
_serde::Serialize
|
|
for
|
|
__SerializeWith<'__a,
|
|
'a>
|
|
{
|
|
fn serialize<__S>(&self,
|
|
__s:
|
|
__S)
|
|
->
|
|
_serde::export::Result<__S::Ok,
|
|
__S::Error>
|
|
where
|
|
__S: _serde::Serializer {
|
|
bool_qs_serialize::serialize(self.values.0,
|
|
__s)
|
|
}
|
|
}
|
|
&__SerializeWith{values:
|
|
(&self.only_media,),
|
|
phantom:
|
|
_serde::export::PhantomData::<StatusesRequest<'a>>,}
|
|
})
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"only_media")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !bool_qs_serialize::is_false(&self.exclude_replies)
|
|
{
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"exclude_replies",
|
|
{
|
|
struct __SerializeWith<'__a,
|
|
'a: '__a> {
|
|
values: (&'__a bool,),
|
|
phantom: _serde::export::PhantomData<StatusesRequest<'a>>,
|
|
}
|
|
impl <'__a,
|
|
'a: '__a>
|
|
_serde::Serialize
|
|
for
|
|
__SerializeWith<'__a,
|
|
'a>
|
|
{
|
|
fn serialize<__S>(&self,
|
|
__s:
|
|
__S)
|
|
->
|
|
_serde::export::Result<__S::Ok,
|
|
__S::Error>
|
|
where
|
|
__S: _serde::Serializer {
|
|
bool_qs_serialize::serialize(self.values.0,
|
|
__s)
|
|
}
|
|
}
|
|
&__SerializeWith{values:
|
|
(&self.exclude_replies,),
|
|
phantom:
|
|
_serde::export::PhantomData::<StatusesRequest<'a>>,}
|
|
})
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"exclude_replies")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !bool_qs_serialize::is_false(&self.pinned) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"pinned",
|
|
{
|
|
struct __SerializeWith<'__a,
|
|
'a: '__a> {
|
|
values: (&'__a bool,),
|
|
phantom: _serde::export::PhantomData<StatusesRequest<'a>>,
|
|
}
|
|
impl <'__a,
|
|
'a: '__a>
|
|
_serde::Serialize
|
|
for
|
|
__SerializeWith<'__a,
|
|
'a>
|
|
{
|
|
fn serialize<__S>(&self,
|
|
__s:
|
|
__S)
|
|
->
|
|
_serde::export::Result<__S::Ok,
|
|
__S::Error>
|
|
where
|
|
__S: _serde::Serializer {
|
|
bool_qs_serialize::serialize(self.values.0,
|
|
__s)
|
|
}
|
|
}
|
|
&__SerializeWith{values:
|
|
(&self.pinned,),
|
|
phantom:
|
|
_serde::export::PhantomData::<StatusesRequest<'a>>,}
|
|
})
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"pinned")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.max_id) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"max_id",
|
|
&self.max_id)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"max_id")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.since_id) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"since_id",
|
|
&self.since_id)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"since_id")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.limit) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"limit",
|
|
&self.limit)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"limit")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.min_id) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"min_id",
|
|
&self.min_id)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"min_id")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
impl <'a> Into<Option<StatusesRequest<'a>>> for
|
|
&'a mut StatusesRequest<'a> {
|
|
fn into(self) -> Option<StatusesRequest<'a>> {
|
|
Some(StatusesRequest{only_media: self.only_media,
|
|
exclude_replies: self.exclude_replies,
|
|
pinned: self.pinned,
|
|
max_id: self.max_id.clone(),
|
|
since_id: self.since_id.clone(),
|
|
limit: self.limit.clone(),
|
|
min_id: self.min_id.clone(),})
|
|
}
|
|
}
|
|
impl <'a> StatusesRequest<'a> {
|
|
/// Construct a new `StatusesRequest` object
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use elefren::StatusesRequest;
|
|
/// let request = StatusesRequest::new();
|
|
/// ```
|
|
pub fn new() -> Self { Self::default() }
|
|
/// Set the `?only_media=1` flag for the .statuses() request
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use elefren::StatusesRequest;
|
|
/// let mut request = StatusesRequest::new();
|
|
/// assert_eq!(&request.only_media().to_querystring().expect("Couldn't serialize qs"), "?only_media=1");
|
|
pub fn only_media(&mut self) -> &mut Self {
|
|
self.only_media = true;
|
|
self
|
|
}
|
|
/// Set the `?exclude_replies=1` flag for the .statuses() request
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use elefren::StatusesRequest;
|
|
/// let mut request = StatusesRequest::new();
|
|
/// assert_eq!(
|
|
/// &request
|
|
/// .exclude_replies()
|
|
/// .to_querystring()
|
|
/// .expect("Couldn't serialize qs"),
|
|
/// "?exclude_replies=1"
|
|
/// );
|
|
/// ```
|
|
pub fn exclude_replies(&mut self) -> &mut Self {
|
|
self.exclude_replies = true;
|
|
self
|
|
}
|
|
/// Set the `?pinned=1` flag for the .statuses() request
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use elefren::StatusesRequest;
|
|
/// let mut request = StatusesRequest::new();
|
|
/// assert_eq!(
|
|
/// &request
|
|
/// .pinned()
|
|
/// .to_querystring()
|
|
/// .expect("Couldn't serialize qs"),
|
|
/// "?pinned=1"
|
|
/// );
|
|
/// ```
|
|
pub fn pinned(&mut self) -> &mut Self { self.pinned = true; self }
|
|
/// Set the `?max_id=:max_id` flag for the .statuses() request
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use elefren::StatusesRequest;
|
|
/// let mut request = StatusesRequest::new();
|
|
/// assert_eq!(
|
|
/// &request
|
|
/// .max_id("foo")
|
|
/// .to_querystring()
|
|
/// .expect("Couldn't serialize qs"),
|
|
/// "?max_id=foo"
|
|
/// );
|
|
/// ```
|
|
pub fn max_id<S: Into<Cow<'a, str>>>(&mut self, max_id: S)
|
|
-> &mut Self {
|
|
self.max_id = Some(max_id.into());
|
|
self
|
|
}
|
|
/// Set the `?since_id=:since_id` flag for the .statuses() request
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use elefren::StatusesRequest;
|
|
/// let mut request = StatusesRequest::new();
|
|
/// assert_eq!(
|
|
/// &request
|
|
/// .since_id("foo")
|
|
/// .to_querystring()
|
|
/// .expect("Couldn't serialize qs"),
|
|
/// "?since_id=foo"
|
|
/// );
|
|
/// ```
|
|
pub fn since_id<S: Into<Cow<'a, str>>>(&mut self, since_id: S)
|
|
-> &mut Self {
|
|
self.since_id = Some(since_id.into());
|
|
self
|
|
}
|
|
/// Set the `?limit=:limit` flag for the .statuses() request
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use elefren::StatusesRequest;
|
|
/// let mut request = StatusesRequest::new();
|
|
/// assert_eq!(
|
|
/// &request
|
|
/// .limit(10)
|
|
/// .to_querystring()
|
|
/// .expect("Couldn't serialize qs"),
|
|
/// "?limit=10"
|
|
/// );
|
|
/// ```
|
|
pub fn limit(&mut self, limit: usize) -> &mut Self {
|
|
self.limit = Some(limit);
|
|
self
|
|
}
|
|
/// Set the `?min_id=:min_id` flag for the .statuses() request
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use elefren::StatusesRequest;
|
|
/// let mut request = StatusesRequest::new();
|
|
/// assert_eq!(
|
|
/// &request
|
|
/// .min_id("foobar")
|
|
/// .to_querystring()
|
|
/// .expect("Couldn't serialize qs"),
|
|
/// "?min_id=foobar"
|
|
/// );
|
|
/// ```
|
|
pub fn min_id<S: Into<Cow<'a, str>>>(&mut self, min_id: S)
|
|
-> &mut Self {
|
|
self.min_id = Some(min_id.into());
|
|
self
|
|
}
|
|
/// Turns this builder into a querystring
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use elefren::StatusesRequest;
|
|
/// let mut request = StatusesRequest::new();
|
|
/// assert_eq!(
|
|
/// &request
|
|
/// .limit(10)
|
|
/// .pinned()
|
|
/// .to_querystring()
|
|
/// .expect("Couldn't serialize qs"),
|
|
/// "?pinned=1&limit=10"
|
|
/// );
|
|
/// ```
|
|
pub fn to_querystring(&self) -> Result<String, Error> {
|
|
Ok({
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["?"],
|
|
&match (&serde_qs::to_string(&self)?,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
})
|
|
}
|
|
}
|
|
}
|
|
mod update_credentials {
|
|
use std::{fmt::Display, path::{Path, PathBuf}};
|
|
use crate::entities::account::{Credentials, MetadataField,
|
|
UpdateSource};
|
|
use crate::errors::Result;
|
|
use crate::status_builder;
|
|
/// Builder to pass to the Mastodon::update_credentials method
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```no_run
|
|
/// # extern crate elefren;
|
|
/// # use elefren::Data;
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// # let data = Data {
|
|
/// # base: "".into(),
|
|
/// # client_id: "".into(),
|
|
/// # client_secret: "".into(),
|
|
/// # redirect: "".into(),
|
|
/// # token: "".into(),
|
|
/// # };
|
|
/// use elefren::{prelude::*, status_builder::Visibility, UpdateCredsRequest};
|
|
///
|
|
/// let client = Mastodon::from(data);
|
|
/// let mut builder = UpdateCredsRequest::new();
|
|
///
|
|
/// builder.privacy(Visibility::Unlisted);
|
|
///
|
|
/// let result = client.update_credentials(&mut builder)?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub struct UpdateCredsRequest {
|
|
display_name: Option<String>,
|
|
note: Option<String>,
|
|
avatar: Option<PathBuf>,
|
|
header: Option<PathBuf>,
|
|
field_attributes: Vec<MetadataField>,
|
|
privacy: Option<status_builder::Visibility>,
|
|
sensitive: Option<bool>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for UpdateCredsRequest {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter)
|
|
-> ::core::fmt::Result {
|
|
match *self {
|
|
UpdateCredsRequest {
|
|
display_name: ref __self_0_0,
|
|
note: ref __self_0_1,
|
|
avatar: ref __self_0_2,
|
|
header: ref __self_0_3,
|
|
field_attributes: ref __self_0_4,
|
|
privacy: ref __self_0_5,
|
|
sensitive: ref __self_0_6 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("UpdateCredsRequest");
|
|
let _ =
|
|
debug_trait_builder.field("display_name",
|
|
&&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("note",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("avatar",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("header",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("field_attributes",
|
|
&&(*__self_0_4));
|
|
let _ =
|
|
debug_trait_builder.field("privacy",
|
|
&&(*__self_0_5));
|
|
let _ =
|
|
debug_trait_builder.field("sensitive",
|
|
&&(*__self_0_6));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for UpdateCredsRequest {
|
|
#[inline]
|
|
fn default() -> UpdateCredsRequest {
|
|
UpdateCredsRequest{display_name:
|
|
::core::default::Default::default(),
|
|
note: ::core::default::Default::default(),
|
|
avatar:
|
|
::core::default::Default::default(),
|
|
header:
|
|
::core::default::Default::default(),
|
|
field_attributes:
|
|
::core::default::Default::default(),
|
|
privacy:
|
|
::core::default::Default::default(),
|
|
sensitive:
|
|
::core::default::Default::default(),}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for UpdateCredsRequest {
|
|
#[inline]
|
|
fn clone(&self) -> UpdateCredsRequest {
|
|
match *self {
|
|
UpdateCredsRequest {
|
|
display_name: ref __self_0_0,
|
|
note: ref __self_0_1,
|
|
avatar: ref __self_0_2,
|
|
header: ref __self_0_3,
|
|
field_attributes: ref __self_0_4,
|
|
privacy: ref __self_0_5,
|
|
sensitive: ref __self_0_6 } =>
|
|
UpdateCredsRequest{display_name:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
note:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
avatar:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
header:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
field_attributes:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),
|
|
privacy:
|
|
::core::clone::Clone::clone(&(*__self_0_5)),
|
|
sensitive:
|
|
::core::clone::Clone::clone(&(*__self_0_6)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for UpdateCredsRequest { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for UpdateCredsRequest {
|
|
#[inline]
|
|
fn eq(&self, other: &UpdateCredsRequest) -> bool {
|
|
match *other {
|
|
UpdateCredsRequest {
|
|
display_name: ref __self_1_0,
|
|
note: ref __self_1_1,
|
|
avatar: ref __self_1_2,
|
|
header: ref __self_1_3,
|
|
field_attributes: ref __self_1_4,
|
|
privacy: ref __self_1_5,
|
|
sensitive: ref __self_1_6 } =>
|
|
match *self {
|
|
UpdateCredsRequest {
|
|
display_name: ref __self_0_0,
|
|
note: ref __self_0_1,
|
|
avatar: ref __self_0_2,
|
|
header: ref __self_0_3,
|
|
field_attributes: ref __self_0_4,
|
|
privacy: ref __self_0_5,
|
|
sensitive: ref __self_0_6 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4) &&
|
|
(*__self_0_5) == (*__self_1_5) &&
|
|
(*__self_0_6) == (*__self_1_6),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &UpdateCredsRequest) -> bool {
|
|
match *other {
|
|
UpdateCredsRequest {
|
|
display_name: ref __self_1_0,
|
|
note: ref __self_1_1,
|
|
avatar: ref __self_1_2,
|
|
header: ref __self_1_3,
|
|
field_attributes: ref __self_1_4,
|
|
privacy: ref __self_1_5,
|
|
sensitive: ref __self_1_6 } =>
|
|
match *self {
|
|
UpdateCredsRequest {
|
|
display_name: ref __self_0_0,
|
|
note: ref __self_0_1,
|
|
avatar: ref __self_0_2,
|
|
header: ref __self_0_3,
|
|
field_attributes: ref __self_0_4,
|
|
privacy: ref __self_0_5,
|
|
sensitive: ref __self_0_6 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4) ||
|
|
(*__self_0_5) != (*__self_1_5) ||
|
|
(*__self_0_6) != (*__self_1_6),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
impl UpdateCredsRequest {
|
|
/// Create a new UpdateCredsRequest
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::UpdateCredsRequest;
|
|
///
|
|
/// let mut builder = UpdateCredsRequest::new();
|
|
/// ```
|
|
pub fn new() -> UpdateCredsRequest { Default::default() }
|
|
/// Set the new display_name value
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::UpdateCredsRequest;
|
|
///
|
|
/// let mut builder = UpdateCredsRequest::new();
|
|
///
|
|
/// builder.display_name("my new display name");
|
|
/// ```
|
|
pub fn display_name<D: Display>(&mut self, name: D) -> &mut Self {
|
|
self.display_name = Some(name.to_string());
|
|
self
|
|
}
|
|
/// Set the new note value
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::UpdateCredsRequest;
|
|
///
|
|
/// let mut builder = UpdateCredsRequest::new();
|
|
///
|
|
/// builder.note("my new note");
|
|
/// ```
|
|
pub fn note<D: Display>(&mut self, note: D) -> &mut Self {
|
|
self.note = Some(note.to_string());
|
|
self
|
|
}
|
|
/// Set the new avatar value
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::UpdateCredsRequest;
|
|
///
|
|
/// let mut builder = UpdateCredsRequest::new();
|
|
///
|
|
/// builder.avatar("/path/to/my/new/avatar");
|
|
/// ```
|
|
pub fn avatar<P: AsRef<Path>>(&mut self, path: P) -> &mut Self {
|
|
let path = path.as_ref();
|
|
let path = path.to_path_buf();
|
|
self.avatar = Some(path);
|
|
self
|
|
}
|
|
/// Set the new header value
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::UpdateCredsRequest;
|
|
///
|
|
/// let mut builder = UpdateCredsRequest::new();
|
|
///
|
|
/// builder.header("/path/to/my/new/header");
|
|
/// ```
|
|
pub fn header<P: AsRef<Path>>(&mut self, path: P) -> &mut Self {
|
|
let path = path.as_ref();
|
|
let path = path.to_path_buf();
|
|
self.header = Some(path);
|
|
self
|
|
}
|
|
/// Set the new privacy value
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::{status_builder::Visibility, UpdateCredsRequest};
|
|
///
|
|
/// let mut builder = UpdateCredsRequest::new();
|
|
///
|
|
/// builder.privacy(Visibility::Public);
|
|
/// ```
|
|
pub fn privacy(&mut self, privacy: status_builder::Visibility)
|
|
-> &mut Self {
|
|
self.privacy = Some(privacy);
|
|
self
|
|
}
|
|
/// Set the new sensitive value
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::UpdateCredsRequest;
|
|
///
|
|
/// let mut builder = UpdateCredsRequest::new();
|
|
///
|
|
/// builder.sensitive(true);
|
|
/// ```
|
|
pub fn sensitive(&mut self, sensitive: bool) -> &mut Self {
|
|
self.sensitive = Some(sensitive);
|
|
self
|
|
}
|
|
/// Add a metadata field
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// use elefren::UpdateCredsRequest;
|
|
///
|
|
/// let mut builder = UpdateCredsRequest::new();
|
|
///
|
|
/// builder.field_attribute("some key", "some value");
|
|
/// ```
|
|
pub fn field_attribute(&mut self, name: &str, value: &str)
|
|
-> &mut Self {
|
|
self.field_attributes.push(MetadataField::new(name, value));
|
|
self
|
|
}
|
|
pub(crate) fn build(&mut self) -> Result<Credentials> {
|
|
Ok(Credentials{display_name: self.display_name.clone(),
|
|
note: self.note.clone(),
|
|
avatar: self.avatar.clone(),
|
|
header: self.avatar.clone(),
|
|
source:
|
|
Some(UpdateSource{privacy:
|
|
self.privacy.clone(),
|
|
sensitive:
|
|
self.sensitive.clone(),}),
|
|
fields_attributes:
|
|
self.field_attributes.clone(),})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/// OAuth Scopes
|
|
pub mod scopes {
|
|
use std::{cmp::{Ordering, PartialEq, PartialOrd}, collections::HashSet,
|
|
fmt, ops::BitOr, str::FromStr};
|
|
use serde::ser::{Serialize, Serializer};
|
|
use crate::errors::Error;
|
|
use serde::{Deserialize, Deserializer};
|
|
use serde::de::{self, Visitor};
|
|
/// Represents a set of OAuth scopes
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```rust
|
|
/// use elefren::prelude::*;
|
|
///
|
|
/// let read = Scopes::read_all();
|
|
/// let write = Scopes::write_all();
|
|
/// let follow = Scopes::follow();
|
|
/// let all = read | write | follow;
|
|
/// ```
|
|
pub struct Scopes {
|
|
scopes: HashSet<Scope>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Scopes {
|
|
#[inline]
|
|
fn clone(&self) -> Scopes {
|
|
match *self {
|
|
Scopes { scopes: ref __self_0_0 } =>
|
|
Scopes{scopes: ::core::clone::Clone::clone(&(*__self_0_0)),},
|
|
}
|
|
}
|
|
}
|
|
impl FromStr for Scopes {
|
|
type Err = Error;
|
|
fn from_str(s: &str) -> Result<Scopes, Self::Err> {
|
|
let mut set = HashSet::new();
|
|
for scope in s.split_whitespace() {
|
|
let scope = Scope::from_str(&scope)?;
|
|
set.insert(scope);
|
|
}
|
|
Ok(Scopes{scopes: set,})
|
|
}
|
|
}
|
|
impl Serialize for Scopes {
|
|
fn serialize<S>(&self, serializer: S)
|
|
-> ::std::result::Result<S::Ok, S::Error> where S: Serializer {
|
|
let repr =
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&[""],
|
|
&match (&self,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
};
|
|
serializer.serialize_str(&repr)
|
|
}
|
|
}
|
|
struct DeserializeScopesVisitor;
|
|
impl <'de> Visitor<'de> for DeserializeScopesVisitor {
|
|
type Value = Scopes;
|
|
fn expecting(&self, formatter: &mut fmt::Formatter)
|
|
-> Result<(), fmt::Error> {
|
|
formatter.write_fmt(::core::fmt::Arguments::new_v1(&["space separated scopes"],
|
|
&match () {
|
|
() => [],
|
|
}))
|
|
}
|
|
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where
|
|
E: de::Error {
|
|
Scopes::from_str(v).map_err(de::Error::custom)
|
|
}
|
|
}
|
|
impl <'de> Deserialize<'de> for Scopes {
|
|
fn deserialize<D>(deserializer: D)
|
|
-> Result<Self, <D as Deserializer<'de>>::Error> where
|
|
D: Deserializer<'de> {
|
|
deserializer.deserialize_str(DeserializeScopesVisitor)
|
|
}
|
|
}
|
|
impl Scopes {
|
|
/// Represents all available oauth scopes: "read write follow push"
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use std::error::Error;
|
|
/// use elefren::scopes::Scopes;
|
|
///
|
|
/// # fn main() -> Result<(), Box<Error>> {
|
|
/// let scope = Scopes::all();
|
|
/// assert_eq!(&format!("{}", scope), "read write follow push");
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn all() -> Scopes {
|
|
Scopes::read_all() | Scopes::write_all() | Scopes::follow() |
|
|
Scopes::push()
|
|
}
|
|
/// Represents the full "read" scope
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use std::error::Error;
|
|
/// use elefren::scopes::Scopes;
|
|
///
|
|
/// # fn main() -> Result<(), Box<Error>> {
|
|
/// let scope = Scopes::read_all();
|
|
/// assert_eq!(&format!("{}", scope), "read");
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn read_all() -> Scopes { Scopes::_read(None) }
|
|
/// Represents a specific "read:___" scope
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use std::error::Error;
|
|
/// use elefren::scopes::{Read, Scopes};
|
|
///
|
|
/// # fn main() -> Result<(), Box<Error>> {
|
|
/// let scope = Scopes::read(Read::Accounts);
|
|
/// assert_eq!(&format!("{}", scope), "read:accounts");
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn read(subscope: Read) -> Scopes {
|
|
Scopes::_read(Some(subscope))
|
|
}
|
|
/// Represents the full "write" scope
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use std::error::Error;
|
|
/// use elefren::scopes::Scopes;
|
|
///
|
|
/// # fn main() -> Result<(), Box<Error>> {
|
|
/// let scope = Scopes::write_all();
|
|
/// assert_eq!(&format!("{}", scope), "write");
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn write_all() -> Scopes { Scopes::_write(None) }
|
|
/// Represents a specific "write:___" scope
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use std::error::Error;
|
|
/// use elefren::scopes::{Scopes, Write};
|
|
///
|
|
/// # fn main() -> Result<(), Box<Error>> {
|
|
/// let scope = Scopes::write(Write::Accounts);
|
|
/// assert_eq!(&format!("{}", scope), "write:accounts");
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn write(subscope: Write) -> Scopes {
|
|
Scopes::_write(Some(subscope))
|
|
}
|
|
/// Represents the "follow" scope
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use std::error::Error;
|
|
/// use elefren::scopes::Scopes;
|
|
///
|
|
/// # fn main() -> Result<(), Box<Error>> {
|
|
/// let scope = Scopes::follow();
|
|
/// assert_eq!(&format!("{}", scope), "follow");
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn follow() -> Scopes { Scopes::new(Scope::Follow) }
|
|
/// Represents the full "push" scope
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use std::error::Error;
|
|
/// use elefren::scopes::Scopes;
|
|
///
|
|
/// # fn main() -> Result<(), Box<Error>> {
|
|
/// let scope = Scopes::push();
|
|
/// assert_eq!(&format!("{}", scope), "push");
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn push() -> Scopes { Scopes::new(Scope::Push) }
|
|
/// Combines 2 scopes together
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```rust
|
|
/// use elefren::prelude::*;
|
|
///
|
|
/// let read = Scopes::read_all();
|
|
/// let write = Scopes::write_all();
|
|
/// let read_write = read.and(write);
|
|
/// ```
|
|
pub fn and(self, other: Scopes) -> Scopes {
|
|
let newset: HashSet<_> =
|
|
self.scopes.union(&other.scopes).into_iter().map(|s|
|
|
*s).collect();
|
|
Scopes{scopes: newset,}
|
|
}
|
|
fn _write(subscope: Option<Write>) -> Scopes {
|
|
Scopes::new(Scope::Write(subscope))
|
|
}
|
|
fn _read(subscope: Option<Read>) -> Scopes {
|
|
Scopes::new(Scope::Read(subscope))
|
|
}
|
|
fn new(scope: Scope) -> Scopes {
|
|
let mut set = HashSet::new();
|
|
set.insert(scope);
|
|
Scopes{scopes: set,}
|
|
}
|
|
}
|
|
impl BitOr for Scopes {
|
|
type Output = Scopes;
|
|
fn bitor(self, other: Scopes) -> Self::Output { self.and(other) }
|
|
}
|
|
impl PartialEq for Scopes {
|
|
fn eq(&self, other: &Scopes) -> bool {
|
|
self.scopes.symmetric_difference(&other.scopes).next().is_none()
|
|
}
|
|
}
|
|
impl Default for Scopes {
|
|
fn default() -> Scopes { Scopes::read_all() }
|
|
}
|
|
impl fmt::Debug for Scopes {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
f.write_fmt(::core::fmt::Arguments::new_v1(&["["],
|
|
&match () {
|
|
() => [],
|
|
}))?;
|
|
for scope in &self.scopes {
|
|
f.write_fmt(::core::fmt::Arguments::new_v1(&[""],
|
|
&match (&&scope,) {
|
|
(arg0,) =>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Debug::fmt)],
|
|
}))?;
|
|
}
|
|
Ok(f.write_fmt(::core::fmt::Arguments::new_v1(&["]"],
|
|
&match () {
|
|
() => [],
|
|
}))?)
|
|
}
|
|
}
|
|
impl fmt::Display for Scopes {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
let mut start = true;
|
|
let scopes =
|
|
{
|
|
let mut scopes = self.scopes.iter().collect::<Vec<_>>();
|
|
scopes.sort();
|
|
scopes
|
|
};
|
|
for scope in &scopes {
|
|
if !start {
|
|
f.write_fmt(::core::fmt::Arguments::new_v1(&[" "],
|
|
&match () {
|
|
() => [],
|
|
}))?;
|
|
} else { start = false; }
|
|
f.write_fmt(::core::fmt::Arguments::new_v1(&[""],
|
|
&match (&&scope,) {
|
|
(arg0,) =>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))?;
|
|
}
|
|
Ok(())
|
|
}
|
|
}
|
|
/// Permission scope of the application.
|
|
/// [Details on what each permission provides][1]
|
|
/// [1]: https://github.com/tootsuite/documentation/blob/master/Using-the-API/OAuth-details.md)
|
|
enum Scope {
|
|
|
|
/// Read only permissions.
|
|
#[serde(rename = "read")]
|
|
Read(Option<Read>),
|
|
|
|
/// Write only permissions.
|
|
#[serde(rename = "write")]
|
|
Write(Option<Write>),
|
|
|
|
/// Only permission to add and remove followers.
|
|
#[serde(rename = "follow")]
|
|
Follow,
|
|
|
|
/// Push permissions
|
|
#[serde(rename = "push")]
|
|
Push,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Scope {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match (&*self,) {
|
|
(&Scope::Read(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Read");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Scope::Write(ref __self_0),) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Write");
|
|
let _ = debug_trait_builder.field(&&(*__self_0));
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Scope::Follow,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Follow");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Scope::Push,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Push");
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Scope {
|
|
#[inline]
|
|
fn clone(&self) -> Scope {
|
|
{
|
|
let _: ::core::clone::AssertParamIsClone<Option<Read>>;
|
|
let _: ::core::clone::AssertParamIsClone<Option<Write>>;
|
|
*self
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::marker::Copy for Scope { }
|
|
impl ::core::marker::StructuralPartialEq for Scope { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Scope {
|
|
#[inline]
|
|
fn eq(&self, other: &Scope) -> bool {
|
|
{
|
|
let __self_vi =
|
|
unsafe { ::core::intrinsics::discriminant_value(&*self) };
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) {
|
|
(&Scope::Read(ref __self_0),
|
|
&Scope::Read(ref __arg_1_0)) =>
|
|
(*__self_0) == (*__arg_1_0),
|
|
(&Scope::Write(ref __self_0),
|
|
&Scope::Write(ref __arg_1_0)) =>
|
|
(*__self_0) == (*__arg_1_0),
|
|
_ => true,
|
|
}
|
|
} else { false }
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &Scope) -> bool {
|
|
{
|
|
let __self_vi =
|
|
unsafe { ::core::intrinsics::discriminant_value(&*self) };
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) {
|
|
(&Scope::Read(ref __self_0),
|
|
&Scope::Read(ref __arg_1_0)) =>
|
|
(*__self_0) != (*__arg_1_0),
|
|
(&Scope::Write(ref __self_0),
|
|
&Scope::Write(ref __arg_1_0)) =>
|
|
(*__self_0) != (*__arg_1_0),
|
|
_ => false,
|
|
}
|
|
} else { true }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialOrd for Scope {
|
|
#[inline]
|
|
fn partial_cmp(&self, other: &Scope)
|
|
-> ::core::option::Option<::core::cmp::Ordering> {
|
|
{
|
|
let __self_vi =
|
|
unsafe { ::core::intrinsics::discriminant_value(&*self) };
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) {
|
|
(&Scope::Read(ref __self_0),
|
|
&Scope::Read(ref __arg_1_0)) =>
|
|
match ::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
|
|
&(*__arg_1_0))
|
|
{
|
|
::core::option::Option::Some(::core::cmp::Ordering::Equal)
|
|
=>
|
|
::core::option::Option::Some(::core::cmp::Ordering::Equal),
|
|
cmp => cmp,
|
|
},
|
|
(&Scope::Write(ref __self_0),
|
|
&Scope::Write(ref __arg_1_0)) =>
|
|
match ::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
|
|
&(*__arg_1_0))
|
|
{
|
|
::core::option::Option::Some(::core::cmp::Ordering::Equal)
|
|
=>
|
|
::core::option::Option::Some(::core::cmp::Ordering::Equal),
|
|
cmp => cmp,
|
|
},
|
|
_ =>
|
|
::core::option::Option::Some(::core::cmp::Ordering::Equal),
|
|
}
|
|
} else { __self_vi.partial_cmp(&__arg_1_vi) }
|
|
}
|
|
}
|
|
#[inline]
|
|
fn lt(&self, other: &Scope) -> bool {
|
|
{
|
|
let __self_vi =
|
|
unsafe { ::core::intrinsics::discriminant_value(&*self) };
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) {
|
|
(&Scope::Read(ref __self_0),
|
|
&Scope::Read(ref __arg_1_0)) =>
|
|
::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
|
|
&(*__arg_1_0)),
|
|
::core::cmp::Ordering::Greater)
|
|
== ::core::cmp::Ordering::Less,
|
|
(&Scope::Write(ref __self_0),
|
|
&Scope::Write(ref __arg_1_0)) =>
|
|
::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
|
|
&(*__arg_1_0)),
|
|
::core::cmp::Ordering::Greater)
|
|
== ::core::cmp::Ordering::Less,
|
|
_ => false,
|
|
}
|
|
} else { __self_vi.lt(&__arg_1_vi) }
|
|
}
|
|
}
|
|
#[inline]
|
|
fn le(&self, other: &Scope) -> bool {
|
|
{
|
|
let __self_vi =
|
|
unsafe { ::core::intrinsics::discriminant_value(&*self) };
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) {
|
|
(&Scope::Read(ref __self_0),
|
|
&Scope::Read(ref __arg_1_0)) =>
|
|
::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
|
|
&(*__arg_1_0)),
|
|
::core::cmp::Ordering::Greater)
|
|
!= ::core::cmp::Ordering::Greater,
|
|
(&Scope::Write(ref __self_0),
|
|
&Scope::Write(ref __arg_1_0)) =>
|
|
::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
|
|
&(*__arg_1_0)),
|
|
::core::cmp::Ordering::Greater)
|
|
!= ::core::cmp::Ordering::Greater,
|
|
_ => true,
|
|
}
|
|
} else { __self_vi.le(&__arg_1_vi) }
|
|
}
|
|
}
|
|
#[inline]
|
|
fn gt(&self, other: &Scope) -> bool {
|
|
{
|
|
let __self_vi =
|
|
unsafe { ::core::intrinsics::discriminant_value(&*self) };
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) {
|
|
(&Scope::Read(ref __self_0),
|
|
&Scope::Read(ref __arg_1_0)) =>
|
|
::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
|
|
&(*__arg_1_0)),
|
|
::core::cmp::Ordering::Less)
|
|
== ::core::cmp::Ordering::Greater,
|
|
(&Scope::Write(ref __self_0),
|
|
&Scope::Write(ref __arg_1_0)) =>
|
|
::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
|
|
&(*__arg_1_0)),
|
|
::core::cmp::Ordering::Less)
|
|
== ::core::cmp::Ordering::Greater,
|
|
_ => false,
|
|
}
|
|
} else { __self_vi.gt(&__arg_1_vi) }
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ge(&self, other: &Scope) -> bool {
|
|
{
|
|
let __self_vi =
|
|
unsafe { ::core::intrinsics::discriminant_value(&*self) };
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) {
|
|
(&Scope::Read(ref __self_0),
|
|
&Scope::Read(ref __arg_1_0)) =>
|
|
::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
|
|
&(*__arg_1_0)),
|
|
::core::cmp::Ordering::Less)
|
|
!= ::core::cmp::Ordering::Less,
|
|
(&Scope::Write(ref __self_0),
|
|
&Scope::Write(ref __arg_1_0)) =>
|
|
::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
|
|
&(*__arg_1_0)),
|
|
::core::cmp::Ordering::Less)
|
|
!= ::core::cmp::Ordering::Less,
|
|
_ => true,
|
|
}
|
|
} else { __self_vi.ge(&__arg_1_vi) }
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralEq for Scope { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::Eq for Scope {
|
|
#[inline]
|
|
#[doc(hidden)]
|
|
fn assert_receiver_is_total_eq(&self) -> () {
|
|
{
|
|
let _: ::core::cmp::AssertParamIsEq<Option<Read>>;
|
|
let _: ::core::cmp::AssertParamIsEq<Option<Write>>;
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::hash::Hash for Scope {
|
|
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) -> () {
|
|
match (&*self,) {
|
|
(&Scope::Read(ref __self_0),) => {
|
|
::core::hash::Hash::hash(&unsafe {
|
|
::core::intrinsics::discriminant_value(self)
|
|
}, state);
|
|
::core::hash::Hash::hash(&(*__self_0), state)
|
|
}
|
|
(&Scope::Write(ref __self_0),) => {
|
|
::core::hash::Hash::hash(&unsafe {
|
|
::core::intrinsics::discriminant_value(self)
|
|
}, state);
|
|
::core::hash::Hash::hash(&(*__self_0), state)
|
|
}
|
|
_ => {
|
|
::core::hash::Hash::hash(&unsafe {
|
|
::core::intrinsics::discriminant_value(self)
|
|
}, state)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Scope: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for Scope {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
match *self {
|
|
Scope::Read(ref __field0) =>
|
|
_serde::Serializer::serialize_newtype_variant(__serializer,
|
|
"Scope",
|
|
0u32,
|
|
"read",
|
|
__field0),
|
|
Scope::Write(ref __field0) =>
|
|
_serde::Serializer::serialize_newtype_variant(__serializer,
|
|
"Scope",
|
|
1u32,
|
|
"write",
|
|
__field0),
|
|
Scope::Follow =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Scope",
|
|
2u32,
|
|
"follow"),
|
|
Scope::Push =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Scope",
|
|
3u32,
|
|
"push"),
|
|
}
|
|
}
|
|
}
|
|
};
|
|
impl FromStr for Scope {
|
|
type Err = Error;
|
|
fn from_str(s: &str) -> Result<Scope, Self::Err> {
|
|
Ok(match s {
|
|
"read" => Scope::Read(None),
|
|
"write" => Scope::Write(None),
|
|
"follow" => Scope::Follow,
|
|
"push" => Scope::Push,
|
|
read if read.starts_with("read:") => {
|
|
let r: Read = Read::from_str(&read[5..])?;
|
|
Scope::Read(Some(r))
|
|
}
|
|
write if write.starts_with("write:") => {
|
|
let w: Write = Write::from_str(&write[6..])?;
|
|
Scope::Write(Some(w))
|
|
}
|
|
_ => return Err(Error::Other("Unknown scope".to_string())),
|
|
})
|
|
}
|
|
}
|
|
impl Ord for Scope {
|
|
fn cmp(&self, other: &Scope) -> Ordering {
|
|
match (*self, *other) {
|
|
(Scope::Read(None), Scope::Read(None)) => Ordering::Equal,
|
|
(Scope::Read(None), Scope::Read(Some(..))) => Ordering::Less,
|
|
(Scope::Read(Some(..)), Scope::Read(None)) =>
|
|
Ordering::Greater,
|
|
(Scope::Read(Some(ref a)), Scope::Read(Some(ref b))) =>
|
|
a.cmp(b),
|
|
(Scope::Write(None), Scope::Write(None)) => Ordering::Equal,
|
|
(Scope::Write(None), Scope::Write(Some(..))) =>
|
|
Ordering::Less,
|
|
(Scope::Write(Some(..)), Scope::Write(None)) =>
|
|
Ordering::Greater,
|
|
(Scope::Write(Some(ref a)), Scope::Write(Some(ref b))) =>
|
|
a.cmp(b),
|
|
(Scope::Read(..), Scope::Write(..)) => Ordering::Less,
|
|
(Scope::Read(..), Scope::Follow) => Ordering::Less,
|
|
(Scope::Read(..), Scope::Push) => Ordering::Less,
|
|
(Scope::Write(..), Scope::Read(..)) => Ordering::Greater,
|
|
(Scope::Write(..), Scope::Follow) => Ordering::Less,
|
|
(Scope::Write(..), Scope::Push) => Ordering::Less,
|
|
(Scope::Follow, Scope::Read(..)) => Ordering::Greater,
|
|
(Scope::Follow, Scope::Write(..)) => Ordering::Greater,
|
|
(Scope::Follow, Scope::Follow) => Ordering::Equal,
|
|
(Scope::Follow, Scope::Push) => Ordering::Less,
|
|
(Scope::Push, Scope::Push) => Ordering::Equal,
|
|
(Scope::Push, _) => Ordering::Greater,
|
|
}
|
|
}
|
|
}
|
|
impl fmt::Display for Scope {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
use self::Scope::*;
|
|
let s =
|
|
match *self {
|
|
Read(Some(ref r)) => return fmt::Display::fmt(r, f),
|
|
Read(None) => "read",
|
|
Write(Some(ref w)) => return fmt::Display::fmt(w, f),
|
|
Write(None) => "write",
|
|
Follow => "follow",
|
|
Push => "push",
|
|
};
|
|
f.write_fmt(::core::fmt::Arguments::new_v1(&[""],
|
|
&match (&s,) {
|
|
(arg0,) =>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
}
|
|
}
|
|
impl Default for Scope {
|
|
fn default() -> Self { Scope::Read(None) }
|
|
}
|
|
/// Represents the granular "read:___" oauth scopes
|
|
pub enum Read {
|
|
|
|
/// Accounts
|
|
#[serde(rename = "accounts")]
|
|
Accounts,
|
|
|
|
/// Blocks
|
|
#[serde(rename = "blocks")]
|
|
Blocks,
|
|
|
|
/// Favourites
|
|
#[serde(rename = "favourites")]
|
|
Favourites,
|
|
|
|
/// Filters
|
|
#[serde(rename = "filters")]
|
|
Filters,
|
|
|
|
/// Follows
|
|
#[serde(rename = "follows")]
|
|
Follows,
|
|
|
|
/// Lists
|
|
#[serde(rename = "lists")]
|
|
Lists,
|
|
|
|
/// Mutes
|
|
#[serde(rename = "mutes")]
|
|
Mutes,
|
|
|
|
/// Notifications
|
|
#[serde(rename = "notifications")]
|
|
Notifications,
|
|
|
|
/// Reports
|
|
#[serde(rename = "reports")]
|
|
Reports,
|
|
|
|
/// Search
|
|
#[serde(rename = "search")]
|
|
Search,
|
|
|
|
/// Statuses
|
|
#[serde(rename = "statuses")]
|
|
Statuses,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Read {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match (&*self,) {
|
|
(&Read::Accounts,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Accounts");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Read::Blocks,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Blocks");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Read::Favourites,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Favourites");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Read::Filters,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Filters");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Read::Follows,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Follows");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Read::Lists,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Lists");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Read::Mutes,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Mutes");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Read::Notifications,) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("Notifications");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Read::Reports,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Reports");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Read::Search,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Search");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Read::Statuses,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Statuses");
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Read {
|
|
#[inline]
|
|
fn clone(&self) -> Read { { *self } }
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::marker::Copy for Read { }
|
|
impl ::core::marker::StructuralPartialEq for Read { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Read {
|
|
#[inline]
|
|
fn eq(&self, other: &Read) -> bool {
|
|
{
|
|
let __self_vi =
|
|
unsafe { ::core::intrinsics::discriminant_value(&*self) };
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) { _ => true, }
|
|
} else { false }
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralEq for Read { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::Eq for Read {
|
|
#[inline]
|
|
#[doc(hidden)]
|
|
fn assert_receiver_is_total_eq(&self) -> () { { } }
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::hash::Hash for Read {
|
|
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) -> () {
|
|
match (&*self,) {
|
|
_ => {
|
|
::core::hash::Hash::hash(&unsafe {
|
|
::core::intrinsics::discriminant_value(self)
|
|
}, state)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Read: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for Read {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
match *self {
|
|
Read::Accounts =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Read",
|
|
0u32,
|
|
"accounts"),
|
|
Read::Blocks =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Read",
|
|
1u32,
|
|
"blocks"),
|
|
Read::Favourites =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Read",
|
|
2u32,
|
|
"favourites"),
|
|
Read::Filters =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Read",
|
|
3u32,
|
|
"filters"),
|
|
Read::Follows =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Read",
|
|
4u32,
|
|
"follows"),
|
|
Read::Lists =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Read",
|
|
5u32,
|
|
"lists"),
|
|
Read::Mutes =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Read",
|
|
6u32,
|
|
"mutes"),
|
|
Read::Notifications =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Read",
|
|
7u32,
|
|
"notifications"),
|
|
Read::Reports =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Read",
|
|
8u32,
|
|
"reports"),
|
|
Read::Search =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Read",
|
|
9u32,
|
|
"search"),
|
|
Read::Statuses =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Read",
|
|
10u32,
|
|
"statuses"),
|
|
}
|
|
}
|
|
}
|
|
};
|
|
impl FromStr for Read {
|
|
type Err = Error;
|
|
fn from_str(s: &str) -> Result<Read, Self::Err> {
|
|
Ok(match s {
|
|
"accounts" => Read::Accounts,
|
|
"blocks" => Read::Blocks,
|
|
"favourites" => Read::Favourites,
|
|
"filters" => Read::Filters,
|
|
"follows" => Read::Follows,
|
|
"lists" => Read::Lists,
|
|
"mutes" => Read::Mutes,
|
|
"notifications" => Read::Notifications,
|
|
"reports" => Read::Reports,
|
|
"search" => Read::Search,
|
|
"statuses" => Read::Statuses,
|
|
_ =>
|
|
return Err(Error::Other("Unknown 'read' subcategory".to_string())),
|
|
})
|
|
}
|
|
}
|
|
impl PartialOrd for Read {
|
|
fn partial_cmp(&self, other: &Read) -> Option<Ordering> {
|
|
Some(self.cmp(other))
|
|
}
|
|
}
|
|
impl Ord for Read {
|
|
fn cmp(&self, other: &Read) -> Ordering {
|
|
let a =
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&[""],
|
|
&match (&self,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Debug::fmt)],
|
|
}));
|
|
res
|
|
};
|
|
let b =
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&[""],
|
|
&match (&other,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Debug::fmt)],
|
|
}));
|
|
res
|
|
};
|
|
a.cmp(&b)
|
|
}
|
|
}
|
|
impl fmt::Display for Read {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
f.write_fmt(::core::fmt::Arguments::new_v1(&["read:"],
|
|
&match (&match *self {
|
|
Read::Accounts
|
|
=>
|
|
"accounts",
|
|
Read::Blocks
|
|
=>
|
|
"blocks",
|
|
Read::Favourites
|
|
=>
|
|
"favourites",
|
|
Read::Filters
|
|
=>
|
|
"filters",
|
|
Read::Follows
|
|
=>
|
|
"follows",
|
|
Read::Lists
|
|
=>
|
|
"lists",
|
|
Read::Mutes
|
|
=>
|
|
"mutes",
|
|
Read::Notifications
|
|
=>
|
|
"notifications",
|
|
Read::Reports
|
|
=>
|
|
"reports",
|
|
Read::Search
|
|
=>
|
|
"search",
|
|
Read::Statuses
|
|
=>
|
|
"statuses",
|
|
},) {
|
|
(arg0,) =>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
}
|
|
}
|
|
/// Represents the granular "write:___" oauth scopes
|
|
pub enum Write {
|
|
|
|
/// Accounts
|
|
#[serde(rename = "accounts")]
|
|
Accounts,
|
|
|
|
/// Blocks
|
|
#[serde(rename = "blocks")]
|
|
Blocks,
|
|
|
|
/// Favourites
|
|
#[serde(rename = "favourites")]
|
|
Favourites,
|
|
|
|
/// Filters
|
|
#[serde(rename = "filters")]
|
|
Filters,
|
|
|
|
/// Follows
|
|
#[serde(rename = "follows")]
|
|
Follows,
|
|
|
|
/// Lists
|
|
#[serde(rename = "lists")]
|
|
Lists,
|
|
|
|
/// Media
|
|
#[serde(rename = "media")]
|
|
Media,
|
|
|
|
/// Mutes
|
|
#[serde(rename = "mutes")]
|
|
Mutes,
|
|
|
|
/// Notifications
|
|
#[serde(rename = "notifications")]
|
|
Notifications,
|
|
|
|
/// Reports
|
|
#[serde(rename = "reports")]
|
|
Reports,
|
|
|
|
/// Statuses
|
|
#[serde(rename = "statuses")]
|
|
Statuses,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Write {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match (&*self,) {
|
|
(&Write::Accounts,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Accounts");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Write::Blocks,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Blocks");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Write::Favourites,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Favourites");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Write::Filters,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Filters");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Write::Follows,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Follows");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Write::Lists,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Lists");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Write::Media,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Media");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Write::Mutes,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Mutes");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Write::Notifications,) => {
|
|
let mut debug_trait_builder =
|
|
f.debug_tuple("Notifications");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Write::Reports,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Reports");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Write::Statuses,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Statuses");
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Write {
|
|
#[inline]
|
|
fn clone(&self) -> Write { { *self } }
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::marker::Copy for Write { }
|
|
impl ::core::marker::StructuralPartialEq for Write { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Write {
|
|
#[inline]
|
|
fn eq(&self, other: &Write) -> bool {
|
|
{
|
|
let __self_vi =
|
|
unsafe { ::core::intrinsics::discriminant_value(&*self) };
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) { _ => true, }
|
|
} else { false }
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralEq for Write { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::Eq for Write {
|
|
#[inline]
|
|
#[doc(hidden)]
|
|
fn assert_receiver_is_total_eq(&self) -> () { { } }
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::hash::Hash for Write {
|
|
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) -> () {
|
|
match (&*self,) {
|
|
_ => {
|
|
::core::hash::Hash::hash(&unsafe {
|
|
::core::intrinsics::discriminant_value(self)
|
|
}, state)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Write: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for Write {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
match *self {
|
|
Write::Accounts =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Write",
|
|
0u32,
|
|
"accounts"),
|
|
Write::Blocks =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Write",
|
|
1u32,
|
|
"blocks"),
|
|
Write::Favourites =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Write",
|
|
2u32,
|
|
"favourites"),
|
|
Write::Filters =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Write",
|
|
3u32,
|
|
"filters"),
|
|
Write::Follows =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Write",
|
|
4u32,
|
|
"follows"),
|
|
Write::Lists =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Write",
|
|
5u32,
|
|
"lists"),
|
|
Write::Media =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Write",
|
|
6u32,
|
|
"media"),
|
|
Write::Mutes =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Write",
|
|
7u32,
|
|
"mutes"),
|
|
Write::Notifications =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Write",
|
|
8u32,
|
|
"notifications"),
|
|
Write::Reports =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Write",
|
|
9u32,
|
|
"reports"),
|
|
Write::Statuses =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Write",
|
|
10u32,
|
|
"statuses"),
|
|
}
|
|
}
|
|
}
|
|
};
|
|
impl FromStr for Write {
|
|
type Err = Error;
|
|
fn from_str(s: &str) -> Result<Write, Self::Err> {
|
|
Ok(match s {
|
|
"accounts" => Write::Accounts,
|
|
"blocks" => Write::Blocks,
|
|
"favourites" => Write::Favourites,
|
|
"filters" => Write::Filters,
|
|
"follows" => Write::Follows,
|
|
"lists" => Write::Lists,
|
|
"media" => Write::Media,
|
|
"mutes" => Write::Mutes,
|
|
"notifications" => Write::Notifications,
|
|
"reports" => Write::Reports,
|
|
"statuses" => Write::Statuses,
|
|
_ =>
|
|
return Err(Error::Other("Unknown 'write' subcategory".to_string())),
|
|
})
|
|
}
|
|
}
|
|
impl PartialOrd for Write {
|
|
fn partial_cmp(&self, other: &Write) -> Option<Ordering> {
|
|
Some(self.cmp(other))
|
|
}
|
|
}
|
|
impl Ord for Write {
|
|
fn cmp(&self, other: &Write) -> Ordering {
|
|
let a =
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&[""],
|
|
&match (&self,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Debug::fmt)],
|
|
}));
|
|
res
|
|
};
|
|
let b =
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&[""],
|
|
&match (&other,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Debug::fmt)],
|
|
}));
|
|
res
|
|
};
|
|
a.cmp(&b)
|
|
}
|
|
}
|
|
impl fmt::Display for Write {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
f.write_fmt(::core::fmt::Arguments::new_v1(&["write:"],
|
|
&match (&match *self {
|
|
Write::Accounts
|
|
=>
|
|
"accounts",
|
|
Write::Blocks
|
|
=>
|
|
"blocks",
|
|
Write::Favourites
|
|
=>
|
|
"favourites",
|
|
Write::Filters
|
|
=>
|
|
"filters",
|
|
Write::Follows
|
|
=>
|
|
"follows",
|
|
Write::Lists
|
|
=>
|
|
"lists",
|
|
Write::Media
|
|
=>
|
|
"media",
|
|
Write::Mutes
|
|
=>
|
|
"mutes",
|
|
Write::Notifications
|
|
=>
|
|
"notifications",
|
|
Write::Reports
|
|
=>
|
|
"reports",
|
|
Write::Statuses
|
|
=>
|
|
"statuses",
|
|
},) {
|
|
(arg0,) =>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}))
|
|
}
|
|
}
|
|
}
|
|
/// Constructing a status
|
|
pub mod status_builder {
|
|
use isolang::Language;
|
|
/// A builder pattern struct for constructing a status.
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// # extern crate elefren;
|
|
/// # use elefren::{Language, StatusBuilder};
|
|
///
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// let status = StatusBuilder::new()
|
|
/// .status("a status")
|
|
/// .sensitive(true)
|
|
/// .spoiler_text("a CW")
|
|
/// .language(Language::Eng)
|
|
/// .build()?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub struct StatusBuilder {
|
|
status: Option<String>,
|
|
in_reply_to_id: Option<String>,
|
|
media_ids: Option<Vec<String>>,
|
|
sensitive: Option<bool>,
|
|
spoiler_text: Option<String>,
|
|
content_type: Option<String>,
|
|
visibility: Option<Visibility>,
|
|
language: Option<Language>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for StatusBuilder {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match *self {
|
|
StatusBuilder {
|
|
status: ref __self_0_0,
|
|
in_reply_to_id: ref __self_0_1,
|
|
media_ids: ref __self_0_2,
|
|
sensitive: ref __self_0_3,
|
|
spoiler_text: ref __self_0_4,
|
|
content_type: ref __self_0_5,
|
|
visibility: ref __self_0_6,
|
|
language: ref __self_0_7 } => {
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("StatusBuilder");
|
|
let _ =
|
|
debug_trait_builder.field("status", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("in_reply_to_id",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("media_ids",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("sensitive",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("spoiler_text",
|
|
&&(*__self_0_4));
|
|
let _ =
|
|
debug_trait_builder.field("content_type",
|
|
&&(*__self_0_5));
|
|
let _ =
|
|
debug_trait_builder.field("visibility",
|
|
&&(*__self_0_6));
|
|
let _ =
|
|
debug_trait_builder.field("language",
|
|
&&(*__self_0_7));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for StatusBuilder {
|
|
#[inline]
|
|
fn default() -> StatusBuilder {
|
|
StatusBuilder{status: ::core::default::Default::default(),
|
|
in_reply_to_id: ::core::default::Default::default(),
|
|
media_ids: ::core::default::Default::default(),
|
|
sensitive: ::core::default::Default::default(),
|
|
spoiler_text: ::core::default::Default::default(),
|
|
content_type: ::core::default::Default::default(),
|
|
visibility: ::core::default::Default::default(),
|
|
language: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for StatusBuilder {
|
|
#[inline]
|
|
fn clone(&self) -> StatusBuilder {
|
|
match *self {
|
|
StatusBuilder {
|
|
status: ref __self_0_0,
|
|
in_reply_to_id: ref __self_0_1,
|
|
media_ids: ref __self_0_2,
|
|
sensitive: ref __self_0_3,
|
|
spoiler_text: ref __self_0_4,
|
|
content_type: ref __self_0_5,
|
|
visibility: ref __self_0_6,
|
|
language: ref __self_0_7 } =>
|
|
StatusBuilder{status:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
in_reply_to_id:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
media_ids:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
sensitive:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
spoiler_text:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),
|
|
content_type:
|
|
::core::clone::Clone::clone(&(*__self_0_5)),
|
|
visibility:
|
|
::core::clone::Clone::clone(&(*__self_0_6)),
|
|
language:
|
|
::core::clone::Clone::clone(&(*__self_0_7)),},
|
|
}
|
|
}
|
|
}
|
|
impl ::core::marker::StructuralPartialEq for StatusBuilder { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for StatusBuilder {
|
|
#[inline]
|
|
fn eq(&self, other: &StatusBuilder) -> bool {
|
|
match *other {
|
|
StatusBuilder {
|
|
status: ref __self_1_0,
|
|
in_reply_to_id: ref __self_1_1,
|
|
media_ids: ref __self_1_2,
|
|
sensitive: ref __self_1_3,
|
|
spoiler_text: ref __self_1_4,
|
|
content_type: ref __self_1_5,
|
|
visibility: ref __self_1_6,
|
|
language: ref __self_1_7 } =>
|
|
match *self {
|
|
StatusBuilder {
|
|
status: ref __self_0_0,
|
|
in_reply_to_id: ref __self_0_1,
|
|
media_ids: ref __self_0_2,
|
|
sensitive: ref __self_0_3,
|
|
spoiler_text: ref __self_0_4,
|
|
content_type: ref __self_0_5,
|
|
visibility: ref __self_0_6,
|
|
language: ref __self_0_7 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4) &&
|
|
(*__self_0_5) == (*__self_1_5) &&
|
|
(*__self_0_6) == (*__self_1_6) &&
|
|
(*__self_0_7) == (*__self_1_7),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &StatusBuilder) -> bool {
|
|
match *other {
|
|
StatusBuilder {
|
|
status: ref __self_1_0,
|
|
in_reply_to_id: ref __self_1_1,
|
|
media_ids: ref __self_1_2,
|
|
sensitive: ref __self_1_3,
|
|
spoiler_text: ref __self_1_4,
|
|
content_type: ref __self_1_5,
|
|
visibility: ref __self_1_6,
|
|
language: ref __self_1_7 } =>
|
|
match *self {
|
|
StatusBuilder {
|
|
status: ref __self_0_0,
|
|
in_reply_to_id: ref __self_0_1,
|
|
media_ids: ref __self_0_2,
|
|
sensitive: ref __self_0_3,
|
|
spoiler_text: ref __self_0_4,
|
|
content_type: ref __self_0_5,
|
|
visibility: ref __self_0_6,
|
|
language: ref __self_0_7 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4) ||
|
|
(*__self_0_5) != (*__self_1_5) ||
|
|
(*__self_0_6) != (*__self_1_6) ||
|
|
(*__self_0_7) != (*__self_1_7),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
impl StatusBuilder {
|
|
/// Create a StatusBuilder object
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```rust,no_run
|
|
/// # use elefren::prelude::*;
|
|
/// # use elefren::status_builder::Visibility;
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// # let data = Data {
|
|
/// # base: "".into(),
|
|
/// # client_id: "".into(),
|
|
/// # client_secret: "".into(),
|
|
/// # redirect: "".into(),
|
|
/// # token: "".into(),
|
|
/// # };
|
|
/// # let client = Mastodon::from(data);
|
|
/// let status = StatusBuilder::new()
|
|
/// .status("a status")
|
|
/// .visibility(Visibility::Public)
|
|
/// .build()?;
|
|
/// client.new_status(status)?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn new() -> StatusBuilder { StatusBuilder::default() }
|
|
/// Set the text for the post
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```rust
|
|
/// # use elefren::prelude::*;
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// let status = StatusBuilder::new().status("awoooooo").build()?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn status<I: Into<String>>(&mut self, status: I) -> &mut Self {
|
|
self.status = Some(status.into());
|
|
self
|
|
}
|
|
/// Set the in_reply_to_id for the post
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```rust
|
|
/// # use elefren::prelude::*;
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// let status = StatusBuilder::new()
|
|
/// .status("awooooo")
|
|
/// .in_reply_to("12345")
|
|
/// .build()?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn in_reply_to<I: Into<String>>(&mut self, id: I) -> &mut Self {
|
|
self.in_reply_to_id = Some(id.into());
|
|
self
|
|
}
|
|
/// Set the media_ids for the post
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```rust
|
|
/// # use elefren::prelude::*;
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// let status = StatusBuilder::new().media_ids(&["foo", "bar"]).build()?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn media_ids<S: std::fmt::Display,
|
|
I: IntoIterator<Item = S>>(&mut self, ids: I)
|
|
-> &mut Self {
|
|
self.media_ids =
|
|
Some(ids.into_iter().map(|s|
|
|
s.to_string()).collect::<Vec<_>>());
|
|
self
|
|
}
|
|
/// Set the sensitive attribute for the post
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```rust
|
|
/// # use elefren::prelude::*;
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// let status = StatusBuilder::new()
|
|
/// .media_ids(&["foo", "bar"])
|
|
/// .sensitive(true)
|
|
/// .build()?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn sensitive(&mut self, sensitive: bool) -> &mut Self {
|
|
self.sensitive = Some(sensitive);
|
|
self
|
|
}
|
|
/// Set the spoiler text/CW for the post
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```rust
|
|
/// # use elefren::prelude::*;
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// let status = StatusBuilder::new()
|
|
/// .status("awoooo!!")
|
|
/// .spoiler_text("awoo inside")
|
|
/// .build()?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn spoiler_text<I: Into<String>>(&mut self, spoiler_text: I)
|
|
-> &mut Self {
|
|
self.spoiler_text = Some(spoiler_text.into());
|
|
self
|
|
}
|
|
/// Set the content type of the post
|
|
///
|
|
/// This is a Pleroma and Glitch-soc extension of the API.
|
|
///
|
|
/// # Possible values
|
|
/// - `text/plain`
|
|
/// - `text/html`
|
|
/// - `text/markdown`
|
|
/// - `text/bbcode` (Pleroma only)
|
|
///
|
|
/// The set of supported content types may vary by server.
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```rust
|
|
/// # use elefren::prelude::*;
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// let status = StatusBuilder::new()
|
|
/// .status("<b>thicc</b>")
|
|
/// .content_type("text/html")
|
|
/// .build()?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn content_type<I: Into<String>>(&mut self, content_type: I)
|
|
-> &mut Self {
|
|
self.content_type = Some(content_type.into());
|
|
self
|
|
}
|
|
/// Set the visibility for the post
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```rust
|
|
/// # use elefren::prelude::*;
|
|
/// # use elefren::status_builder::Visibility;
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// let status = StatusBuilder::new()
|
|
/// .status("awooooooo")
|
|
/// .visibility(Visibility::Public)
|
|
/// .build()?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn visibility(&mut self, visibility: Visibility) -> &mut Self {
|
|
self.visibility = Some(visibility);
|
|
self
|
|
}
|
|
/// Set the language for the post
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```rust
|
|
/// # use elefren::prelude::*;
|
|
/// # use elefren::Language;
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// let status = StatusBuilder::new()
|
|
/// .status("awoo!!!!")
|
|
/// .language(Language::Eng)
|
|
/// .build()?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn language(&mut self, language: Language) -> &mut Self {
|
|
self.language = Some(language);
|
|
self
|
|
}
|
|
/// Constructs a NewStatus
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```rust
|
|
/// # use elefren::prelude::*;
|
|
/// # fn main() -> Result<(), elefren::Error> {
|
|
/// let status = StatusBuilder::new().status("awoo!").build()?;
|
|
/// # Ok(())
|
|
/// # }
|
|
/// ```
|
|
pub fn build(&self) -> Result<NewStatus, crate::Error> {
|
|
if self.status.is_none() && self.media_ids.is_none() {
|
|
return Err(crate::Error::Other("status text or media ids are required in order to post a status".to_string()));
|
|
}
|
|
Ok(NewStatus{status: self.status.clone(),
|
|
in_reply_to_id: self.in_reply_to_id.clone(),
|
|
media_ids: self.media_ids.clone(),
|
|
sensitive: self.sensitive.clone(),
|
|
spoiler_text: self.spoiler_text.clone(),
|
|
visibility: self.visibility.clone(),
|
|
language: self.language.clone(),
|
|
content_type: self.content_type.clone(),})
|
|
}
|
|
}
|
|
/// Represents a post that can be sent to the POST /api/v1/status endpoint
|
|
pub struct NewStatus {
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
status: Option<String>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
in_reply_to_id: Option<String>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
media_ids: Option<Vec<String>>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
sensitive: Option<bool>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
spoiler_text: Option<String>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
visibility: Option<Visibility>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
language: Option<Language>,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
content_type: Option<String>,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for NewStatus {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match *self {
|
|
NewStatus {
|
|
status: ref __self_0_0,
|
|
in_reply_to_id: ref __self_0_1,
|
|
media_ids: ref __self_0_2,
|
|
sensitive: ref __self_0_3,
|
|
spoiler_text: ref __self_0_4,
|
|
visibility: ref __self_0_5,
|
|
language: ref __self_0_6,
|
|
content_type: ref __self_0_7 } => {
|
|
let mut debug_trait_builder = f.debug_struct("NewStatus");
|
|
let _ =
|
|
debug_trait_builder.field("status", &&(*__self_0_0));
|
|
let _ =
|
|
debug_trait_builder.field("in_reply_to_id",
|
|
&&(*__self_0_1));
|
|
let _ =
|
|
debug_trait_builder.field("media_ids",
|
|
&&(*__self_0_2));
|
|
let _ =
|
|
debug_trait_builder.field("sensitive",
|
|
&&(*__self_0_3));
|
|
let _ =
|
|
debug_trait_builder.field("spoiler_text",
|
|
&&(*__self_0_4));
|
|
let _ =
|
|
debug_trait_builder.field("visibility",
|
|
&&(*__self_0_5));
|
|
let _ =
|
|
debug_trait_builder.field("language",
|
|
&&(*__self_0_6));
|
|
let _ =
|
|
debug_trait_builder.field("content_type",
|
|
&&(*__self_0_7));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::default::Default for NewStatus {
|
|
#[inline]
|
|
fn default() -> NewStatus {
|
|
NewStatus{status: ::core::default::Default::default(),
|
|
in_reply_to_id: ::core::default::Default::default(),
|
|
media_ids: ::core::default::Default::default(),
|
|
sensitive: ::core::default::Default::default(),
|
|
spoiler_text: ::core::default::Default::default(),
|
|
visibility: ::core::default::Default::default(),
|
|
language: ::core::default::Default::default(),
|
|
content_type: ::core::default::Default::default(),}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for NewStatus {
|
|
#[inline]
|
|
fn clone(&self) -> NewStatus {
|
|
match *self {
|
|
NewStatus {
|
|
status: ref __self_0_0,
|
|
in_reply_to_id: ref __self_0_1,
|
|
media_ids: ref __self_0_2,
|
|
sensitive: ref __self_0_3,
|
|
spoiler_text: ref __self_0_4,
|
|
visibility: ref __self_0_5,
|
|
language: ref __self_0_6,
|
|
content_type: ref __self_0_7 } =>
|
|
NewStatus{status: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
in_reply_to_id:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),
|
|
media_ids:
|
|
::core::clone::Clone::clone(&(*__self_0_2)),
|
|
sensitive:
|
|
::core::clone::Clone::clone(&(*__self_0_3)),
|
|
spoiler_text:
|
|
::core::clone::Clone::clone(&(*__self_0_4)),
|
|
visibility:
|
|
::core::clone::Clone::clone(&(*__self_0_5)),
|
|
language:
|
|
::core::clone::Clone::clone(&(*__self_0_6)),
|
|
content_type:
|
|
::core::clone::Clone::clone(&(*__self_0_7)),},
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_NewStatus: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for NewStatus {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"NewStatus",
|
|
false as
|
|
usize +
|
|
if Option::is_none(&self.status)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.in_reply_to_id)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.media_ids)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.sensitive)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.spoiler_text)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.visibility)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.language)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
if Option::is_none(&self.content_type)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
}) {
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
if !Option::is_none(&self.status) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"status",
|
|
&self.status)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"status")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.in_reply_to_id) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"in_reply_to_id",
|
|
&self.in_reply_to_id)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"in_reply_to_id")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.media_ids) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"media_ids",
|
|
&self.media_ids)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"media_ids")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.sensitive) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"sensitive",
|
|
&self.sensitive)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"sensitive")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.spoiler_text) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"spoiler_text",
|
|
&self.spoiler_text)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"spoiler_text")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.visibility) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"visibility",
|
|
&self.visibility)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"visibility")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.language) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"language",
|
|
&self.language)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"language")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
if !Option::is_none(&self.content_type) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"content_type",
|
|
&self.content_type)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"content_type")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for NewStatus { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for NewStatus {
|
|
#[inline]
|
|
fn eq(&self, other: &NewStatus) -> bool {
|
|
match *other {
|
|
NewStatus {
|
|
status: ref __self_1_0,
|
|
in_reply_to_id: ref __self_1_1,
|
|
media_ids: ref __self_1_2,
|
|
sensitive: ref __self_1_3,
|
|
spoiler_text: ref __self_1_4,
|
|
visibility: ref __self_1_5,
|
|
language: ref __self_1_6,
|
|
content_type: ref __self_1_7 } =>
|
|
match *self {
|
|
NewStatus {
|
|
status: ref __self_0_0,
|
|
in_reply_to_id: ref __self_0_1,
|
|
media_ids: ref __self_0_2,
|
|
sensitive: ref __self_0_3,
|
|
spoiler_text: ref __self_0_4,
|
|
visibility: ref __self_0_5,
|
|
language: ref __self_0_6,
|
|
content_type: ref __self_0_7 } =>
|
|
(*__self_0_0) == (*__self_1_0) &&
|
|
(*__self_0_1) == (*__self_1_1) &&
|
|
(*__self_0_2) == (*__self_1_2) &&
|
|
(*__self_0_3) == (*__self_1_3) &&
|
|
(*__self_0_4) == (*__self_1_4) &&
|
|
(*__self_0_5) == (*__self_1_5) &&
|
|
(*__self_0_6) == (*__self_1_6) &&
|
|
(*__self_0_7) == (*__self_1_7),
|
|
},
|
|
}
|
|
}
|
|
#[inline]
|
|
fn ne(&self, other: &NewStatus) -> bool {
|
|
match *other {
|
|
NewStatus {
|
|
status: ref __self_1_0,
|
|
in_reply_to_id: ref __self_1_1,
|
|
media_ids: ref __self_1_2,
|
|
sensitive: ref __self_1_3,
|
|
spoiler_text: ref __self_1_4,
|
|
visibility: ref __self_1_5,
|
|
language: ref __self_1_6,
|
|
content_type: ref __self_1_7 } =>
|
|
match *self {
|
|
NewStatus {
|
|
status: ref __self_0_0,
|
|
in_reply_to_id: ref __self_0_1,
|
|
media_ids: ref __self_0_2,
|
|
sensitive: ref __self_0_3,
|
|
spoiler_text: ref __self_0_4,
|
|
visibility: ref __self_0_5,
|
|
language: ref __self_0_6,
|
|
content_type: ref __self_0_7 } =>
|
|
(*__self_0_0) != (*__self_1_0) ||
|
|
(*__self_0_1) != (*__self_1_1) ||
|
|
(*__self_0_2) != (*__self_1_2) ||
|
|
(*__self_0_3) != (*__self_1_3) ||
|
|
(*__self_0_4) != (*__self_1_4) ||
|
|
(*__self_0_5) != (*__self_1_5) ||
|
|
(*__self_0_6) != (*__self_1_6) ||
|
|
(*__self_0_7) != (*__self_1_7),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
/// The visibility of a status.
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum Visibility {
|
|
|
|
/// A Direct message to a user
|
|
Direct,
|
|
|
|
/// Only available to followers
|
|
Private,
|
|
|
|
/// Not shown in public timelines
|
|
Unlisted,
|
|
|
|
/// Posted to public timelines
|
|
Public,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Visibility {
|
|
#[inline]
|
|
fn clone(&self) -> Visibility { { *self } }
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::marker::Copy for Visibility { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Visibility {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match (&*self,) {
|
|
(&Visibility::Direct,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Direct");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Visibility::Private,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Private");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Visibility::Unlisted,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Unlisted");
|
|
debug_trait_builder.finish()
|
|
}
|
|
(&Visibility::Public,) => {
|
|
let mut debug_trait_builder = f.debug_tuple("Public");
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
|
|
const _IMPL_DESERIALIZE_FOR_Visibility: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'de> _serde::Deserialize<'de> for Visibility {
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
#[allow(non_camel_case_types)]
|
|
enum __Field { __field0, __field1, __field2, __field3, }
|
|
struct __FieldVisitor;
|
|
impl <'de> _serde::de::Visitor<'de> for __FieldVisitor {
|
|
type Value = __Field;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"variant identifier")
|
|
}
|
|
fn visit_u64<__E>(self, __value: u64)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
0u64 => _serde::export::Ok(__Field::__field0),
|
|
1u64 => _serde::export::Ok(__Field::__field1),
|
|
2u64 => _serde::export::Ok(__Field::__field2),
|
|
3u64 => _serde::export::Ok(__Field::__field3),
|
|
_ =>
|
|
_serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
|
|
&"variant index 0 <= i < 4")),
|
|
}
|
|
}
|
|
fn visit_str<__E>(self, __value: &str)
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
"direct" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
"private" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
"unlisted" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
"public" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
_serde::export::Err(_serde::de::Error::unknown_variant(__value,
|
|
VARIANTS))
|
|
}
|
|
}
|
|
}
|
|
fn visit_bytes<__E>(self, __value: &[u8])
|
|
-> _serde::export::Result<Self::Value, __E> where
|
|
__E: _serde::de::Error {
|
|
match __value {
|
|
b"direct" =>
|
|
_serde::export::Ok(__Field::__field0),
|
|
b"private" =>
|
|
_serde::export::Ok(__Field::__field1),
|
|
b"unlisted" =>
|
|
_serde::export::Ok(__Field::__field2),
|
|
b"public" =>
|
|
_serde::export::Ok(__Field::__field3),
|
|
_ => {
|
|
let __value =
|
|
&_serde::export::from_utf8_lossy(__value);
|
|
_serde::export::Err(_serde::de::Error::unknown_variant(__value,
|
|
VARIANTS))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl <'de> _serde::Deserialize<'de> for __Field {
|
|
#[inline]
|
|
fn deserialize<__D>(__deserializer: __D)
|
|
-> _serde::export::Result<Self, __D::Error> where
|
|
__D: _serde::Deserializer<'de> {
|
|
_serde::Deserializer::deserialize_identifier(__deserializer,
|
|
__FieldVisitor)
|
|
}
|
|
}
|
|
struct __Visitor<'de> {
|
|
marker: _serde::export::PhantomData<Visibility>,
|
|
lifetime: _serde::export::PhantomData<&'de ()>,
|
|
}
|
|
impl <'de> _serde::de::Visitor<'de> for __Visitor<'de> {
|
|
type Value = Visibility;
|
|
fn expecting(&self,
|
|
__formatter:
|
|
&mut _serde::export::Formatter)
|
|
-> _serde::export::fmt::Result {
|
|
_serde::export::Formatter::write_str(__formatter,
|
|
"enum Visibility")
|
|
}
|
|
fn visit_enum<__A>(self, __data: __A)
|
|
-> _serde::export::Result<Self::Value, __A::Error>
|
|
where __A: _serde::de::EnumAccess<'de> {
|
|
match match _serde::de::EnumAccess::variant(__data)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
} {
|
|
(__Field::__field0, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(Visibility::Direct)
|
|
}
|
|
(__Field::__field1, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(Visibility::Private)
|
|
}
|
|
(__Field::__field2, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(Visibility::Unlisted)
|
|
}
|
|
(__Field::__field3, __variant) => {
|
|
match _serde::de::VariantAccess::unit_variant(__variant)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::export::Ok(Visibility::Public)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
const VARIANTS: &'static [&'static str] =
|
|
&["direct", "private", "unlisted", "public"];
|
|
_serde::Deserializer::deserialize_enum(__deserializer,
|
|
"Visibility",
|
|
VARIANTS,
|
|
__Visitor{marker:
|
|
_serde::export::PhantomData::<Visibility>,
|
|
lifetime:
|
|
_serde::export::PhantomData,})
|
|
}
|
|
}
|
|
};
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Visibility: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl _serde::Serialize for Visibility {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
match *self {
|
|
Visibility::Direct =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Visibility",
|
|
0u32,
|
|
"direct"),
|
|
Visibility::Private =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Visibility",
|
|
1u32,
|
|
"private"),
|
|
Visibility::Unlisted =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Visibility",
|
|
2u32,
|
|
"unlisted"),
|
|
Visibility::Public =>
|
|
_serde::Serializer::serialize_unit_variant(__serializer,
|
|
"Visibility",
|
|
3u32,
|
|
"public"),
|
|
}
|
|
}
|
|
}
|
|
};
|
|
impl ::core::marker::StructuralPartialEq for Visibility { }
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::cmp::PartialEq for Visibility {
|
|
#[inline]
|
|
fn eq(&self, other: &Visibility) -> bool {
|
|
{
|
|
let __self_vi =
|
|
unsafe { ::core::intrinsics::discriminant_value(&*self) };
|
|
let __arg_1_vi =
|
|
unsafe {
|
|
::core::intrinsics::discriminant_value(&*other)
|
|
};
|
|
if true && __self_vi == __arg_1_vi {
|
|
match (&*self, &*other) { _ => true, }
|
|
} else { false }
|
|
}
|
|
}
|
|
}
|
|
impl Default for Visibility {
|
|
fn default() -> Self { Visibility::Public }
|
|
}
|
|
}
|
|
#[macro_use]
|
|
mod macros {
|
|
macro_rules! methods {
|
|
($ ($ method : ident,) +) =>
|
|
{
|
|
$
|
|
(fn $ method < T : for < 'de > serde :: Deserialize < 'de >>
|
|
(& self, url : String) -> Result < T >
|
|
{
|
|
let response = self . send(self . client . $ method(& url)) ?
|
|
; deserialise(response)
|
|
}) +
|
|
} ;
|
|
}
|
|
macro_rules! paged_routes {
|
|
(($ method : ident) $ name : ident : $ url : expr => $ ret : ty, $
|
|
($ rest : tt) *) =>
|
|
{
|
|
doc_comment !
|
|
{
|
|
concat !
|
|
("Equivalent to `", stringify ! ($ method), " /api/v1/", $
|
|
url, "`\n# Errors\nIf `access_token` is not set.", "\n",
|
|
"```no_run", "# extern crate elefren;\n",
|
|
"# use elefren::prelude::*;\n",
|
|
"# fn main() -> Result<(), Box<::std::error::Error>> {\n",
|
|
"# let data = Data {\n",
|
|
"# base: \"https://example.com\".into(),\n",
|
|
"# client_id: \"taosuah\".into(),\n",
|
|
"# client_secret: \"htnjdiuae\".into(),\n",
|
|
"# redirect: \"https://example.com\".into(),\n",
|
|
"# token: \"tsaohueaheis\".into(),\n", "# };\n",
|
|
"let client = Mastodon::from(data);\n", "client.", stringify
|
|
! ($ name), "();\n", "# Ok(())\n", "# }\n", "```"), async
|
|
fn $ name(& self) -> Result < Page < '_, $ ret >>
|
|
{
|
|
let url = self . route(concat ! ("/api/v1/", $ url)) ; let
|
|
response = self . send(self . client . $ method(& url)) ?
|
|
; Page :: new(self, response)
|
|
}
|
|
} paged_routes ! { $ ($ rest) * }
|
|
} ;
|
|
((get($ ($ (# [$ m : meta]) * $ param : ident : $ typ : ty,) *)) $
|
|
name : ident : $ url : expr => $ ret : ty, $ ($ rest : tt) *) =>
|
|
{
|
|
doc_comment !
|
|
{
|
|
concat !
|
|
("Equivalent to `get /api/v1/", $ url,
|
|
"`\n# Errors\nIf `access_token` is not set."), async fn $
|
|
name < 'a > (& self, $ ($ param : $ typ,) *) -> Result < Page
|
|
< '_, $ ret >>
|
|
{
|
|
use serde_urlencoded ; # [derive(Serialize)] struct Data <
|
|
'a >
|
|
{
|
|
$ ($ (# [$ m]) * $ param : $ typ,) * # [serde(skip)]
|
|
_marker : :: std :: marker :: PhantomData < & 'a () >,
|
|
} let qs_data = Data
|
|
{
|
|
$ ($ param : $ param,) * _marker : :: std :: marker ::
|
|
PhantomData,
|
|
} ; let qs = serde_urlencoded :: to_string(& qs_data) ? ;
|
|
let url = format !
|
|
(concat ! ("/api/v1/", $ url, "?{}"), & qs) ; let response
|
|
= self . send(self . client . get(& url)) ? ; Page ::
|
|
new(self, response)
|
|
}
|
|
} paged_routes ! { $ ($ rest) * }
|
|
} ; () => { }
|
|
}
|
|
macro_rules! route_v2 {
|
|
((get($ ($ param : ident : $ typ : ty,) *)) $ name : ident : $ url :
|
|
expr => $ ret : ty, $ ($ rest : tt) *) =>
|
|
{
|
|
doc_comment !
|
|
{
|
|
concat !
|
|
("Equivalent to `get /api/v2/", $ url,
|
|
"`\n# Errors\nIf `access_token` is not set."), fn $ name < 'a
|
|
> (& self, $ ($ param : $ typ,) *) -> Result < $ ret >
|
|
{
|
|
use serde_urlencoded ; # [derive(Serialize)] struct Data <
|
|
'a >
|
|
{
|
|
$ ($ param : $ typ,) * # [serde(skip)] _marker : ::
|
|
std :: marker :: PhantomData < & 'a () >,
|
|
} let qs_data = Data
|
|
{
|
|
$ ($ param : $ param,) * _marker : :: std :: marker ::
|
|
PhantomData,
|
|
} ; let qs = serde_urlencoded :: to_string(& qs_data) ? ;
|
|
let url = format !
|
|
(concat ! ("/api/v2/", $ url, "?{}"), & qs) ;
|
|
Ok(self . get(self . route(& url)) ?)
|
|
}
|
|
} route_v2 ! { $ ($ rest) * }
|
|
} ; () => { }
|
|
}
|
|
macro_rules! route {
|
|
((post multipart($ ($ param : ident : $ typ : ty,) *)) $ name : ident
|
|
: $ url : expr => $ ret : ty, $ ($ rest : tt) *) =>
|
|
{
|
|
doc_comment !
|
|
{
|
|
concat !
|
|
("Equivalent to `post /api/v1/", $ url,
|
|
"`\n# Errors\nIf `access_token` is not set."), fn $
|
|
name(& self, $ ($ param : $ typ,) *) -> Result < $ ret >
|
|
{
|
|
use reqwest :: multipart :: Form ; let form_data = Form ::
|
|
new() $
|
|
(. file(stringify ! ($ param), $ param . as_ref()) ?) * ;
|
|
let response = self .
|
|
send(self . client .
|
|
post(& self . route(concat ! ("/api/v1/", $ url))) .
|
|
multipart(form_data)) ? ; let status = response .
|
|
status() . clone() ; if status . is_client_error()
|
|
{ return Err(Error :: Client(status)) ; } else if status .
|
|
is_server_error()
|
|
{ return Err(Error :: Server(status)) ; }
|
|
deserialise(response)
|
|
}
|
|
} route ! { $ ($ rest) * }
|
|
} ;
|
|
((get($ ($ param : ident : $ typ : ty,) *)) $ name : ident : $ url :
|
|
expr => $ ret : ty, $ ($ rest : tt) *) =>
|
|
{
|
|
doc_comment !
|
|
{
|
|
concat !
|
|
("Equivalent to `get /api/v1/", $ url,
|
|
"`\n# Errors\nIf `access_token` is not set."), fn $ name < 'a
|
|
> (& self, $ ($ param : $ typ,) *) -> Result < $ ret >
|
|
{
|
|
use serde_urlencoded ; # [derive(Serialize)] struct Data <
|
|
'a >
|
|
{
|
|
$ ($ param : $ typ,) * # [serde(skip)] _marker : ::
|
|
std :: marker :: PhantomData < & 'a () >,
|
|
} let qs_data = Data
|
|
{
|
|
$ ($ param : $ param,) * _marker : :: std :: marker ::
|
|
PhantomData,
|
|
} ; let qs = serde_urlencoded :: to_string(& qs_data) ? ;
|
|
let url = format !
|
|
(concat ! ("/api/v1/", $ url, "?{}"), & qs) ;
|
|
Ok(self . get(self . route(& url)) ?)
|
|
}
|
|
} route ! { $ ($ rest) * }
|
|
} ;
|
|
(($ method : ident($ ($ param : ident : $ typ : ty,) *)) $ name :
|
|
ident : $ url : expr => $ ret : ty, $ ($ rest : tt) *) =>
|
|
{
|
|
doc_comment !
|
|
{
|
|
concat !
|
|
("Equivalent to `", stringify ! ($ method), " /api/v1/", $
|
|
url, "`\n# Errors\nIf `access_token` is not set.",), fn $
|
|
name(& self, $ ($ param : $ typ,) *) -> Result < $ ret >
|
|
{
|
|
let form_data = json !
|
|
({ $ (stringify ! ($ param) : $ param,) * }) ; let
|
|
response = self .
|
|
send(self . client . $
|
|
method(& self . route(concat ! ("/api/v1/", $ url)))
|
|
. json(& form_data)) ? ; let status = response .
|
|
status() . clone() ; if status . is_client_error()
|
|
{ return Err(Error :: Client(status)) ; } else if status .
|
|
is_server_error()
|
|
{ return Err(Error :: Server(status)) ; }
|
|
deserialise(response)
|
|
}
|
|
} route ! { $ ($ rest) * }
|
|
} ;
|
|
(($ method : ident) $ name : ident : $ url : expr => $ ret : ty, $
|
|
($ rest : tt) *) =>
|
|
{
|
|
doc_comment !
|
|
{
|
|
concat !
|
|
("Equivalent to `", stringify ! ($ method), " /api/v1/", $
|
|
url, "`\n# Errors\nIf `access_token` is not set.", "\n",
|
|
"```no_run", "# extern crate elefren;\n",
|
|
"# use elefren::prelude::*;\n",
|
|
"# fn main() -> Result<(), Box<::std::error::Error>> {\n",
|
|
"# let data = Data {\n",
|
|
"# base: \"https://example.com\".into(),\n",
|
|
"# client_id: \"taosuah\".into(),\n",
|
|
"# client_secret: \"htnjdiuae\".into(),\n",
|
|
"# redirect: \"https://example.com\".into(),\n",
|
|
"# token: \"tsaohueaheis\".into(),\n", "# };\n",
|
|
"let client = Mastodon::from(data);\n", "client.", stringify
|
|
! ($ name), "();\n", "# Ok(())\n", "# }\n", "```"), fn $
|
|
name(& self) -> Result < $ ret >
|
|
{
|
|
self . $
|
|
method(self . route(concat ! ("/api/v1/", $ url)))
|
|
}
|
|
} route ! { $ ($ rest) * }
|
|
} ; () => { }
|
|
}
|
|
macro_rules! route_id {
|
|
($ (($ method : ident) $ name : ident : $ url : expr => $ ret : ty,)
|
|
*) =>
|
|
{
|
|
$
|
|
(doc_comment !
|
|
{
|
|
concat !
|
|
("Equivalent to `", stringify ! ($ method), " /api/v1/", $
|
|
url, "`\n# Errors\nIf `access_token` is not set.", "\n",
|
|
"```no_run", "# extern crate elefren;\n",
|
|
"# use elefren::prelude::*;\n",
|
|
"# fn main() -> Result<(), Box<::std::error::Error>> {\n",
|
|
"# let data = Data {\n",
|
|
"# base: \"https://example.com\".into(),\n",
|
|
"# client_id: \"taosuah\".into(),\n",
|
|
"# client_secret: \"htnjdiuae\".into(),\n",
|
|
"# redirect: \"https://example.com\".into(),\n",
|
|
"# token: \"tsaohueaheis\".into(),\n", "# };\n",
|
|
"let client = Mastodon::from(data);\n", "client.", stringify
|
|
! ($ name), "(\"42\");\n", "# Ok(())\n", "# }\n", "```"),
|
|
fn $ name(& self, id : & str) -> Result < $ ret >
|
|
{
|
|
self . $
|
|
method(self .
|
|
route(& format !
|
|
(concat ! ("/api/v1/", $ url), id)))
|
|
}
|
|
}) *
|
|
}
|
|
}
|
|
macro_rules! paged_routes_with_id {
|
|
(($ method : ident) $ name : ident : $ url : expr => $ ret : ty, $
|
|
($ rest : tt) *) =>
|
|
{
|
|
doc_comment !
|
|
{
|
|
concat !
|
|
("Equivalent to `", stringify ! ($ method), " /api/v1/", $
|
|
url, "`\n# Errors\nIf `access_token` is not set.", "\n",
|
|
"```no_run", "# extern crate elefren;\n",
|
|
"# use elefren::prelude::*;\n",
|
|
"# fn main() -> Result<(), Box<::std::error::Error>> {\n",
|
|
"# let data = Data {\n",
|
|
"# base: \"https://example.com\".into(),\n",
|
|
"# client_id: \"taosuah\".into(),\n",
|
|
"# client_secret: \"htnjdiuae\".into(),\n",
|
|
"# redirect: \"https://example.com\".into(),\n",
|
|
"# token: \"tsaohueaheis\".into(),\n", "# };\n",
|
|
"let client = Mastodon::from(data);\n", "client.", stringify
|
|
! ($ name), "(\"some-id\");\n", "# Ok(())\n", "# }\n",
|
|
"```"), fn $ name(& self, id : & str) -> Result < Page < $
|
|
ret >>
|
|
{
|
|
let url = self .
|
|
route(& format ! (concat ! ("/api/v1/", $ url), id)) ; let
|
|
response = self . send(self . client . $ method(& url)) ?
|
|
; Page :: new(self, response)
|
|
}
|
|
} paged_routes_with_id ! { $ ($ rest) * }
|
|
} ; () => { }
|
|
}
|
|
}
|
|
/// Automatically import the things you need
|
|
pub mod prelude {
|
|
pub use crate::scopes::Scopes;
|
|
pub use crate::Data;
|
|
pub use crate::Mastodon;
|
|
pub use crate::MastodonClient;
|
|
pub use crate::NewStatus;
|
|
pub use crate::Registration;
|
|
pub use crate::StatusBuilder;
|
|
pub use crate::StatusesRequest;
|
|
}
|
|
/// Your mastodon application client, handles all requests to and from Mastodon.
|
|
pub struct Mastodon {
|
|
client: Client,
|
|
/// Raw data about your mastodon instance.
|
|
pub data: Data,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for Mastodon {
|
|
#[inline]
|
|
fn clone(&self) -> Mastodon {
|
|
match *self {
|
|
Mastodon { client: ref __self_0_0, data: ref __self_0_1 } =>
|
|
Mastodon{client: ::core::clone::Clone::clone(&(*__self_0_0)),
|
|
data: ::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for Mastodon {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match *self {
|
|
Mastodon { client: ref __self_0_0, data: ref __self_0_1 } => {
|
|
let mut debug_trait_builder = f.debug_struct("Mastodon");
|
|
let _ = debug_trait_builder.field("client", &&(*__self_0_0));
|
|
let _ = debug_trait_builder.field("data", &&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl Mastodon {
|
|
fn get<T: for<'de> serde::Deserialize<'de>>(&self, url: String)
|
|
-> Result<T> {
|
|
let response = self.send(self.client.get(&url))?;
|
|
deserialise(response)
|
|
}
|
|
fn post<T: for<'de> serde::Deserialize<'de>>(&self, url: String)
|
|
-> Result<T> {
|
|
let response = self.send(self.client.post(&url))?;
|
|
deserialise(response)
|
|
}
|
|
fn delete<T: for<'de> serde::Deserialize<'de>>(&self, url: String)
|
|
-> Result<T> {
|
|
let response = self.send(self.client.delete(&url))?;
|
|
deserialise(response)
|
|
}
|
|
fn route(&self, url: &str) -> String {
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["", ""],
|
|
&match (&self.base,
|
|
&url)
|
|
{
|
|
(arg0,
|
|
arg1)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg1,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}
|
|
}
|
|
pub(crate) fn send(&self, req: RequestBuilder) -> Result<Response> {
|
|
let req = req.bearer_auth(&self.token).build()?;
|
|
Ok(self.client.execute(req)?)
|
|
}
|
|
}
|
|
impl From<Data> for Mastodon {
|
|
/// Creates a mastodon instance from the data struct.
|
|
fn from(data: Data) -> Mastodon {
|
|
let mut builder = MastodonBuilder::new();
|
|
builder.data(data);
|
|
builder.build().expect("We know `data` is present, so this should be fine")
|
|
}
|
|
}
|
|
impl MastodonClient for Mastodon {
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/favourites`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.favourites();\n# Ok(())\n# }\n```"]
|
|
async fn favourites(&self) -> Result<Page<'_, Status>> {
|
|
let url = self.route("/api/v1/favourites");
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/blocks`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.blocks();\n# Ok(())\n# }\n```"]
|
|
async fn blocks(&self) -> Result<Page<'_, Account>> {
|
|
let url = self.route("/api/v1/blocks");
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/domain_blocks`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.domain_blocks();\n# Ok(())\n# }\n```"]
|
|
async fn domain_blocks(&self) -> Result<Page<'_, String>> {
|
|
let url = self.route("/api/v1/domain_blocks");
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/follow_requests`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.follow_requests();\n# Ok(())\n# }\n```"]
|
|
async fn follow_requests(&self) -> Result<Page<'_, Account>> {
|
|
let url = self.route("/api/v1/follow_requests");
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/timelines/home`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_home_timeline();\n# Ok(())\n# }\n```"]
|
|
async fn get_home_timeline(&self) -> Result<Page<'_, Status>> {
|
|
let url = self.route("/api/v1/timelines/home");
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/custom_emojis`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_emojis();\n# Ok(())\n# }\n```"]
|
|
async fn get_emojis(&self) -> Result<Page<'_, Emoji>> {
|
|
let url = self.route("/api/v1/custom_emojis");
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/mutes`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.mutes();\n# Ok(())\n# }\n```"]
|
|
async fn mutes(&self) -> Result<Page<'_, Account>> {
|
|
let url = self.route("/api/v1/mutes");
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/notifications`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.notifications();\n# Ok(())\n# }\n```"]
|
|
async fn notifications(&self) -> Result<Page<'_, Notification>> {
|
|
let url = self.route("/api/v1/notifications");
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/reports`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.reports();\n# Ok(())\n# }\n```"]
|
|
async fn reports(&self) -> Result<Page<'_, Report>> {
|
|
let url = self.route("/api/v1/reports");
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/accounts/search`\n# Errors\nIf `access_token` is not set."]
|
|
async fn search_accounts<'a>(&self, q: &'a str, limit: Option<u64>,
|
|
following: bool)
|
|
-> Result<Page<'_, Account>> {
|
|
use serde_urlencoded;
|
|
struct Data<'a> {
|
|
q: &'a str,
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
limit: Option<u64>,
|
|
following: bool,
|
|
#[serde(skip)]
|
|
_marker: ::std::marker::PhantomData<&'a ()>,
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Data: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'a> _serde::Serialize for Data<'a> {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"Data",
|
|
false
|
|
as
|
|
usize
|
|
+ 1
|
|
+
|
|
if Option::is_none(&self.limit)
|
|
{
|
|
0
|
|
} else {
|
|
1
|
|
} +
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"q",
|
|
&self.q)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
if !Option::is_none(&self.limit) {
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"limit",
|
|
&self.limit)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
} else {
|
|
match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
|
|
"limit")
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
}
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"following",
|
|
&self.following)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
let qs_data =
|
|
Data{q: q,
|
|
limit: limit,
|
|
following: following,
|
|
_marker: ::std::marker::PhantomData,};
|
|
let qs = serde_urlencoded::to_string(&qs_data)?;
|
|
let url =
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/search?"],
|
|
&match (&&qs,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
};
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/endorsements`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_endorsements();\n# Ok(())\n# }\n```"]
|
|
async fn get_endorsements(&self) -> Result<Page<'_, Account>> {
|
|
let url = self.route("/api/v1/endorsements");
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/accounts/{}/followers`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.followers(\"some-id\");\n# Ok(())\n# }\n```"]
|
|
fn followers(&self, id: &str) -> Result<Page<Account>> {
|
|
let url =
|
|
self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
|
|
"/followers"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
});
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/accounts/{}/following`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.following(\"some-id\");\n# Ok(())\n# }\n```"]
|
|
fn following(&self, id: &str) -> Result<Page<Account>> {
|
|
let url =
|
|
self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
|
|
"/following"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
});
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/statuses/{}/reblogged_by`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.reblogged_by(\"some-id\");\n# Ok(())\n# }\n```"]
|
|
fn reblogged_by(&self, id: &str) -> Result<Page<Account>> {
|
|
let url =
|
|
self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
|
|
"/reblogged_by"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
});
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/statuses/{}/favourited_by`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.favourited_by(\"some-id\");\n# Ok(())\n# }\n```"]
|
|
fn favourited_by(&self, id: &str) -> Result<Page<Account>> {
|
|
let url =
|
|
self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
|
|
"/favourited_by"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
});
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `delete /api/v1/domain_blocks`\n# Errors\nIf `access_token` is not set."]
|
|
fn unblock_domain(&self, domain: String) -> Result<Empty> {
|
|
let form_data =
|
|
::serde_json::Value::Object({
|
|
let mut object =
|
|
::serde_json::Map::new();
|
|
let _ =
|
|
object.insert(("domain").into(),
|
|
::serde_json::to_value(&domain).unwrap());
|
|
object
|
|
});
|
|
let response =
|
|
self.send(self.client.delete(&self.route("/api/v1/domain_blocks")).json(&form_data))?;
|
|
let status = response.status().clone();
|
|
if status.is_client_error() {
|
|
return Err(Error::Client(status));
|
|
} else if status.is_server_error() {
|
|
return Err(Error::Server(status));
|
|
}
|
|
deserialise(response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/instance`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.instance();\n# Ok(())\n# }\n```"]
|
|
fn instance(&self) -> Result<Instance> {
|
|
self.get(self.route("/api/v1/instance"))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/accounts/verify_credentials`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.verify_credentials();\n# Ok(())\n# }\n```"]
|
|
fn verify_credentials(&self) -> Result<Account> {
|
|
self.get(self.route("/api/v1/accounts/verify_credentials"))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/reports`\n# Errors\nIf `access_token` is not set."]
|
|
fn report(&self, account_id: &str, status_ids: Vec<&str>, comment: String)
|
|
-> Result<Report> {
|
|
let form_data =
|
|
::serde_json::Value::Object({
|
|
let mut object =
|
|
::serde_json::Map::new();
|
|
let _ =
|
|
object.insert(("account_id").into(),
|
|
::serde_json::to_value(&account_id).unwrap());
|
|
let _ =
|
|
object.insert(("status_ids").into(),
|
|
::serde_json::to_value(&status_ids).unwrap());
|
|
let _ =
|
|
object.insert(("comment").into(),
|
|
::serde_json::to_value(&comment).unwrap());
|
|
object
|
|
});
|
|
let response =
|
|
self.send(self.client.post(&self.route("/api/v1/reports")).json(&form_data))?;
|
|
let status = response.status().clone();
|
|
if status.is_client_error() {
|
|
return Err(Error::Client(status));
|
|
} else if status.is_server_error() {
|
|
return Err(Error::Server(status));
|
|
}
|
|
deserialise(response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/domain_blocks`\n# Errors\nIf `access_token` is not set."]
|
|
fn block_domain(&self, domain: String) -> Result<Empty> {
|
|
let form_data =
|
|
::serde_json::Value::Object({
|
|
let mut object =
|
|
::serde_json::Map::new();
|
|
let _ =
|
|
object.insert(("domain").into(),
|
|
::serde_json::to_value(&domain).unwrap());
|
|
object
|
|
});
|
|
let response =
|
|
self.send(self.client.post(&self.route("/api/v1/domain_blocks")).json(&form_data))?;
|
|
let status = response.status().clone();
|
|
if status.is_client_error() {
|
|
return Err(Error::Client(status));
|
|
} else if status.is_server_error() {
|
|
return Err(Error::Server(status));
|
|
}
|
|
deserialise(response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/accounts/follow_requests/authorize`\n# Errors\nIf `access_token` is not set."]
|
|
fn authorize_follow_request(&self, id: &str) -> Result<Empty> {
|
|
let form_data =
|
|
::serde_json::Value::Object({
|
|
let mut object =
|
|
::serde_json::Map::new();
|
|
let _ =
|
|
object.insert(("id").into(),
|
|
::serde_json::to_value(&id).unwrap());
|
|
object
|
|
});
|
|
let response =
|
|
self.send(self.client.post(&self.route("/api/v1/accounts/follow_requests/authorize")).json(&form_data))?;
|
|
let status = response.status().clone();
|
|
if status.is_client_error() {
|
|
return Err(Error::Client(status));
|
|
} else if status.is_server_error() {
|
|
return Err(Error::Server(status));
|
|
}
|
|
deserialise(response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/accounts/follow_requests/reject`\n# Errors\nIf `access_token` is not set."]
|
|
fn reject_follow_request(&self, id: &str) -> Result<Empty> {
|
|
let form_data =
|
|
::serde_json::Value::Object({
|
|
let mut object =
|
|
::serde_json::Map::new();
|
|
let _ =
|
|
object.insert(("id").into(),
|
|
::serde_json::to_value(&id).unwrap());
|
|
object
|
|
});
|
|
let response =
|
|
self.send(self.client.post(&self.route("/api/v1/accounts/follow_requests/reject")).json(&form_data))?;
|
|
let status = response.status().clone();
|
|
if status.is_client_error() {
|
|
return Err(Error::Client(status));
|
|
} else if status.is_server_error() {
|
|
return Err(Error::Server(status));
|
|
}
|
|
deserialise(response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/search`\n# Errors\nIf `access_token` is not set."]
|
|
fn search<'a>(&self, q: &'a str, resolve: bool) -> Result<SearchResult> {
|
|
use serde_urlencoded;
|
|
struct Data<'a> {
|
|
q: &'a str,
|
|
resolve: bool,
|
|
#[serde(skip)]
|
|
_marker: ::std::marker::PhantomData<&'a ()>,
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Data: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'a> _serde::Serialize for Data<'a> {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"Data",
|
|
false
|
|
as
|
|
usize
|
|
+ 1
|
|
+
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"q",
|
|
&self.q)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"resolve",
|
|
&self.resolve)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
let qs_data =
|
|
Data{q: q,
|
|
resolve: resolve,
|
|
_marker: ::std::marker::PhantomData,};
|
|
let qs = serde_urlencoded::to_string(&qs_data)?;
|
|
let url =
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/search?"],
|
|
&match (&&qs,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
};
|
|
Ok(self.get(self.route(&url))?)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/timelines/public`\n# Errors\nIf `access_token` is not set."]
|
|
fn get_public_timeline<'a>(&self, local: bool) -> Result<Vec<Status>> {
|
|
use serde_urlencoded;
|
|
struct Data<'a> {
|
|
local: bool,
|
|
#[serde(skip)]
|
|
_marker: ::std::marker::PhantomData<&'a ()>,
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Data: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'a> _serde::Serialize for Data<'a> {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"Data",
|
|
false
|
|
as
|
|
usize
|
|
+
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"local",
|
|
&self.local)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
let qs_data =
|
|
Data{local: local, _marker: ::std::marker::PhantomData,};
|
|
let qs = serde_urlencoded::to_string(&qs_data)?;
|
|
let url =
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/timelines/public?"],
|
|
&match (&&qs,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
};
|
|
Ok(self.get(self.route(&url))?)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/follows`\n# Errors\nIf `access_token` is not set."]
|
|
fn follows(&self, uri: Cow<'static, str>) -> Result<Account> {
|
|
let form_data =
|
|
::serde_json::Value::Object({
|
|
let mut object =
|
|
::serde_json::Map::new();
|
|
let _ =
|
|
object.insert(("uri").into(),
|
|
::serde_json::to_value(&uri).unwrap());
|
|
object
|
|
});
|
|
let response =
|
|
self.send(self.client.post(&self.route("/api/v1/follows")).json(&form_data))?;
|
|
let status = response.status().clone();
|
|
if status.is_client_error() {
|
|
return Err(Error::Client(status));
|
|
} else if status.is_server_error() {
|
|
return Err(Error::Server(status));
|
|
}
|
|
deserialise(response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/media`\n# Errors\nIf `access_token` is not set."]
|
|
fn media(&self, file: Cow<'static, str>) -> Result<Attachment> {
|
|
use reqwest::multipart::Form;
|
|
let form_data = Form::new().file("file", file.as_ref())?;
|
|
let response =
|
|
self.send(self.client.post(&self.route("/api/v1/media")).multipart(form_data))?;
|
|
let status = response.status().clone();
|
|
if status.is_client_error() {
|
|
return Err(Error::Client(status));
|
|
} else if status.is_server_error() {
|
|
return Err(Error::Server(status));
|
|
}
|
|
deserialise(response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/notifications/clear`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.clear_notifications();\n# Ok(())\n# }\n```"]
|
|
fn clear_notifications(&self) -> Result<Empty> {
|
|
self.post(self.route("/api/v1/notifications/clear"))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/notifications/dismiss`\n# Errors\nIf `access_token` is not set."]
|
|
fn dismiss_notification(&self, id: &str) -> Result<Empty> {
|
|
let form_data =
|
|
::serde_json::Value::Object({
|
|
let mut object =
|
|
::serde_json::Map::new();
|
|
let _ =
|
|
object.insert(("id").into(),
|
|
::serde_json::to_value(&id).unwrap());
|
|
object
|
|
});
|
|
let response =
|
|
self.send(self.client.post(&self.route("/api/v1/notifications/dismiss")).json(&form_data))?;
|
|
let status = response.status().clone();
|
|
if status.is_client_error() {
|
|
return Err(Error::Client(status));
|
|
} else if status.is_server_error() {
|
|
return Err(Error::Server(status));
|
|
}
|
|
deserialise(response)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/push/subscription`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_push_subscription();\n# Ok(())\n# }\n```"]
|
|
fn get_push_subscription(&self) -> Result<Subscription> {
|
|
self.get(self.route("/api/v1/push/subscription"))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `delete /api/v1/push/subscription`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.delete_push_subscription();\n# Ok(())\n# }\n```"]
|
|
fn delete_push_subscription(&self) -> Result<Empty> {
|
|
self.delete(self.route("/api/v1/push/subscription"))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/filters`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_filters();\n# Ok(())\n# }\n```"]
|
|
fn get_filters(&self) -> Result<Vec<Filter>> {
|
|
self.get(self.route("/api/v1/filters"))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/suggestions`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_follow_suggestions();\n# Ok(())\n# }\n```"]
|
|
fn get_follow_suggestions(&self) -> Result<Vec<Account>> {
|
|
self.get(self.route("/api/v1/suggestions"))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v2/search`\n# Errors\nIf `access_token` is not set."]
|
|
fn search_v2<'a>(&self, q: &'a str, resolve: bool)
|
|
-> Result<SearchResultV2> {
|
|
use serde_urlencoded;
|
|
struct Data<'a> {
|
|
q: &'a str,
|
|
resolve: bool,
|
|
#[serde(skip)]
|
|
_marker: ::std::marker::PhantomData<&'a ()>,
|
|
}
|
|
#[doc(hidden)]
|
|
#[allow(non_upper_case_globals, unused_attributes,
|
|
unused_qualifications)]
|
|
const _IMPL_SERIALIZE_FOR_Data: () =
|
|
{
|
|
#[allow(rust_2018_idioms, clippy :: useless_attribute)]
|
|
extern crate serde as _serde;
|
|
#[allow(unused_macros)]
|
|
macro_rules! try {
|
|
($ __expr : expr) =>
|
|
{
|
|
match $ __expr
|
|
{
|
|
_serde :: export :: Ok(__val) => __val, _serde ::
|
|
export :: Err(__err) =>
|
|
{ return _serde :: export :: Err(__err) ; }
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
impl <'a> _serde::Serialize for Data<'a> {
|
|
fn serialize<__S>(&self, __serializer: __S)
|
|
-> _serde::export::Result<__S::Ok, __S::Error> where
|
|
__S: _serde::Serializer {
|
|
let mut __serde_state =
|
|
match _serde::Serializer::serialize_struct(__serializer,
|
|
"Data",
|
|
false
|
|
as
|
|
usize
|
|
+ 1
|
|
+
|
|
1)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"q",
|
|
&self.q)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
|
|
"resolve",
|
|
&self.resolve)
|
|
{
|
|
_serde::export::Ok(__val) => __val,
|
|
_serde::export::Err(__err) => {
|
|
return _serde::export::Err(__err);
|
|
}
|
|
};
|
|
_serde::ser::SerializeStruct::end(__serde_state)
|
|
}
|
|
}
|
|
};
|
|
let qs_data =
|
|
Data{q: q,
|
|
resolve: resolve,
|
|
_marker: ::std::marker::PhantomData,};
|
|
let qs = serde_urlencoded::to_string(&qs_data)?;
|
|
let url =
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v2/search?"],
|
|
&match (&&qs,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
};
|
|
Ok(self.get(self.route(&url))?)
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/accounts/{}`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_account(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn get_account(&self, id: &str) -> Result<Account> {
|
|
self.get(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/accounts/{}/follow`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.follow(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn follow(&self, id: &str) -> Result<Relationship> {
|
|
self.post(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
|
|
"/follow"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/accounts/{}/unfollow`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.unfollow(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn unfollow(&self, id: &str) -> Result<Relationship> {
|
|
self.post(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
|
|
"/unfollow"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/accounts/{}/block`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.block(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn block(&self, id: &str) -> Result<Relationship> {
|
|
self.post(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
|
|
"/block"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/accounts/{}/unblock`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.unblock(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn unblock(&self, id: &str) -> Result<Relationship> {
|
|
self.post(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
|
|
"/unblock"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/accounts/{}/mute`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.mute(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn mute(&self, id: &str) -> Result<Relationship> {
|
|
self.get(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
|
|
"/mute"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/accounts/{}/unmute`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.unmute(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn unmute(&self, id: &str) -> Result<Relationship> {
|
|
self.get(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
|
|
"/unmute"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/notifications/{}`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_notification(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn get_notification(&self, id: &str) -> Result<Notification> {
|
|
self.get(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/notifications/"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/statuses/{}`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_status(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn get_status(&self, id: &str) -> Result<Status> {
|
|
self.get(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/statuses/{}/context`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_context(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn get_context(&self, id: &str) -> Result<Context> {
|
|
self.get(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
|
|
"/context"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/statuses/{}/card`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_card(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn get_card(&self, id: &str) -> Result<Card> {
|
|
self.get(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
|
|
"/card"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/statuses/{}/reblog`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.reblog(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn reblog(&self, id: &str) -> Result<Status> {
|
|
self.post(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
|
|
"/reblog"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/statuses/{}/unreblog`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.unreblog(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn unreblog(&self, id: &str) -> Result<Status> {
|
|
self.post(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
|
|
"/unreblog"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/statuses/{}/favourite`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.favourite(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn favourite(&self, id: &str) -> Result<Status> {
|
|
self.post(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
|
|
"/favourite"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/statuses/{}/unfavourite`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.unfavourite(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn unfavourite(&self, id: &str) -> Result<Status> {
|
|
self.post(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
|
|
"/unfavourite"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `delete /api/v1/statuses/{}`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.delete_status(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn delete_status(&self, id: &str) -> Result<Empty> {
|
|
self.delete(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `get /api/v1/filters/{}`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_filter(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn get_filter(&self, id: &str) -> Result<Filter> {
|
|
self.get(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/filters/"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `delete /api/v1/filters/{}`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.delete_filter(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn delete_filter(&self, id: &str) -> Result<Empty> {
|
|
self.delete(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/filters/"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `delete /api/v1/suggestions/{}`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.delete_from_suggestions(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn delete_from_suggestions(&self, id: &str) -> Result<Empty> {
|
|
self.delete(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/suggestions/"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/accounts/{}/pin`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.endorse_user(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn endorse_user(&self, id: &str) -> Result<Relationship> {
|
|
self.post(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
|
|
"/pin"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
#[doc =
|
|
"Equivalent to `post /api/v1/accounts/{}/unpin`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n# base: \"https://example.com\".into(),\n# client_id: \"taosuah\".into(),\n# client_secret: \"htnjdiuae\".into(),\n# redirect: \"https://example.com\".into(),\n# token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.unendorse_user(\"42\");\n# Ok(())\n# }\n```"]
|
|
fn unendorse_user(&self, id: &str) -> Result<Relationship> {
|
|
self.post(self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
|
|
"/unpin"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}))
|
|
}
|
|
fn add_filter(&self, request: &mut AddFilterRequest) -> Result<Filter> {
|
|
let url = self.route("/api/v1/filters");
|
|
let response = self.send(self.client.post(&url).json(&request))?;
|
|
let status = response.status();
|
|
if status.is_client_error() {
|
|
return Err(Error::Client(status.clone()));
|
|
} else if status.is_server_error() {
|
|
return Err(Error::Server(status.clone()));
|
|
}
|
|
deserialise(response)
|
|
}
|
|
#[doc = " PUT /api/v1/filters/:id"]
|
|
fn update_filter(&self, id: &str, request: &mut AddFilterRequest)
|
|
-> Result<Filter> {
|
|
let url =
|
|
self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/filters/"],
|
|
&match (&id,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
});
|
|
let response = self.send(self.client.put(&url).json(&request))?;
|
|
let status = response.status();
|
|
if status.is_client_error() {
|
|
return Err(Error::Client(status.clone()));
|
|
} else if status.is_server_error() {
|
|
return Err(Error::Server(status.clone()));
|
|
}
|
|
deserialise(response)
|
|
}
|
|
fn update_credentials(&self, builder: &mut UpdateCredsRequest)
|
|
-> Result<Account> {
|
|
let changes = builder.build()?;
|
|
let url = self.route("/api/v1/accounts/update_credentials");
|
|
let response = self.send(self.client.patch(&url).json(&changes))?;
|
|
let status = response.status();
|
|
if status.is_client_error() {
|
|
return Err(Error::Client(status.clone()));
|
|
} else if status.is_server_error() {
|
|
return Err(Error::Server(status.clone()));
|
|
}
|
|
deserialise(response)
|
|
}
|
|
#[doc = " Post a new status to the account."]
|
|
fn new_status(&self, status: NewStatus) -> Result<Status> {
|
|
let response =
|
|
self.send(self.client.post(&self.route("/api/v1/statuses")).json(&status))?;
|
|
deserialise(response)
|
|
}
|
|
#[doc =
|
|
" Get timeline filtered by a hashtag(eg. `#coffee`) either locally or"]
|
|
#[doc = " federated."]
|
|
fn get_tagged_timeline(&self, hashtag: String, local: bool)
|
|
-> Result<Vec<Status>> {
|
|
let base = "/api/v1/timelines/tag/";
|
|
let url =
|
|
if local {
|
|
self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
|
|
"",
|
|
"?local=1"],
|
|
&match (&base,
|
|
&hashtag)
|
|
{
|
|
(arg0,
|
|
arg1)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg1,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
})
|
|
} else {
|
|
self.route(&{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
|
|
""],
|
|
&match (&base,
|
|
&hashtag)
|
|
{
|
|
(arg0,
|
|
arg1)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg1,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
})
|
|
};
|
|
self.get(url)
|
|
}
|
|
#[doc =
|
|
" Get statuses of a single account by id. Optionally only with pictures"]
|
|
#[doc = " and or excluding replies."]
|
|
#[doc = ""]
|
|
#[doc = " # Example"]
|
|
#[doc = ""]
|
|
#[doc = " ```no_run"]
|
|
#[doc = " # extern crate elefren;"]
|
|
#[doc = " # use elefren::prelude::*;"]
|
|
#[doc = " # use std::error::Error;"]
|
|
#[doc = " # fn main() -> Result<(), Box<Error>> {"]
|
|
#[doc = " # let data = Data {"]
|
|
#[doc = " # base: \"\".into(),"]
|
|
#[doc = " # client_id: \"\".into(),"]
|
|
#[doc = " # client_secret: \"\".into(),"]
|
|
#[doc = " # redirect: \"\".into(),"]
|
|
#[doc = " # token: \"\".into(),"]
|
|
#[doc = " # };"]
|
|
#[doc = " let client = Mastodon::from(data);"]
|
|
#[doc = " let statuses = client.statuses(\"user-id\", None)?;"]
|
|
#[doc = " # Ok(())"]
|
|
#[doc = " # }"]
|
|
#[doc = " ```"]
|
|
#[doc = ""]
|
|
#[doc = " ```no_run"]
|
|
#[doc = " # extern crate elefren;"]
|
|
#[doc = " # use elefren::prelude::*;"]
|
|
#[doc = " # use std::error::Error;"]
|
|
#[doc = " # fn main() -> Result<(), Box<Error>> {"]
|
|
#[doc = " # let data = Data {"]
|
|
#[doc = " # base: \"\".into(),"]
|
|
#[doc = " # client_id: \"\".into(),"]
|
|
#[doc = " # client_secret: \"\".into(),"]
|
|
#[doc = " # redirect: \"\".into(),"]
|
|
#[doc = " # token: \"\".into(),"]
|
|
#[doc = " # };"]
|
|
#[doc = " let client = Mastodon::from(data);"]
|
|
#[doc = " let mut request = StatusesRequest::new();"]
|
|
#[doc = " request.only_media();"]
|
|
#[doc = " let statuses = client.statuses(\"user-id\", request)?;"]
|
|
#[doc = " # Ok(())"]
|
|
#[doc = " # }"]
|
|
#[doc = " ```"]
|
|
fn statuses<'a, 'b: 'a, S>(&'b self, id: &'b str, request: S)
|
|
-> Result<Page<Status>> where S: Into<Option<StatusesRequest<'a>>> {
|
|
let mut url =
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
|
|
"/api/v1/accounts/",
|
|
"/statuses"],
|
|
&match (&self.base,
|
|
&id)
|
|
{
|
|
(arg0,
|
|
arg1)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg1,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
};
|
|
if let Some(request) = request.into() {
|
|
url =
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
|
|
""],
|
|
&match (&url,
|
|
&request.to_querystring()?)
|
|
{
|
|
(arg0,
|
|
arg1)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt),
|
|
::core::fmt::ArgumentV1::new(arg1,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
};
|
|
}
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc =
|
|
" Returns the client account\'s relationship to a list of other accounts."]
|
|
#[doc = " Such as whether they follow them or vice versa."]
|
|
fn relationships(&self, ids: &[&str]) -> Result<Page<Relationship>> {
|
|
let mut url = self.route("/api/v1/accounts/relationships?");
|
|
if ids.len() == 1 {
|
|
url += "id=";
|
|
url += &ids[0];
|
|
} else {
|
|
for id in ids { url += "id[]="; url += &id; url += "&"; }
|
|
url.pop();
|
|
}
|
|
let response = self.send(self.client.get(&url))?;
|
|
Page::new(self, response)
|
|
}
|
|
#[doc = " Add a push notifications subscription"]
|
|
fn add_push_subscription(&self, request: &AddPushRequest)
|
|
-> Result<Subscription> {
|
|
let request = request.build()?;
|
|
let response =
|
|
self.send(self.client.post(&self.route("/api/v1/push/subscription")).json(&request))?;
|
|
deserialise(response)
|
|
}
|
|
#[doc =
|
|
" Update the `data` portion of the push subscription associated with this"]
|
|
#[doc = " access token"]
|
|
fn update_push_data(&self, request: &UpdatePushRequest)
|
|
-> Result<Subscription> {
|
|
let request = request.build();
|
|
let response =
|
|
self.send(self.client.put(&self.route("/api/v1/push/subscription")).json(&request))?;
|
|
deserialise(response)
|
|
}
|
|
#[doc = " Get all accounts that follow the authenticated user"]
|
|
fn follows_me(&self) -> Result<Page<Account>> {
|
|
let me = self.verify_credentials()?;
|
|
Ok(self.followers(&me.id)?)
|
|
}
|
|
#[doc = " Get all accounts that the authenticated user follows"]
|
|
fn followed_by_me(&self) -> Result<Page<Account>> {
|
|
let me = self.verify_credentials()?;
|
|
Ok(self.following(&me.id)?)
|
|
}
|
|
}
|
|
impl ops::Deref for Mastodon {
|
|
type Target = Data;
|
|
fn deref(&self) -> &Self::Target { &self.data }
|
|
}
|
|
struct MastodonBuilder {
|
|
client: Option<Client>,
|
|
data: Option<Data>,
|
|
}
|
|
impl MastodonBuilder {
|
|
pub fn new() -> Self { MastodonBuilder{client: None, data: None,} }
|
|
pub fn client(&mut self, client: Client) -> &mut Self {
|
|
self.client = Some(client);
|
|
self
|
|
}
|
|
pub fn data(&mut self, data: Data) -> &mut Self {
|
|
self.data = Some(data);
|
|
self
|
|
}
|
|
pub fn build(self) -> Result<Mastodon> {
|
|
Ok(if let Some(data) = self.data {
|
|
Mastodon{client: self.client.unwrap_or_else(|| Client::new()),
|
|
data,}
|
|
} else {
|
|
return Err(Error::MissingField("missing field 'data'"));
|
|
})
|
|
}
|
|
}
|
|
/// Client that can make unauthenticated calls to a mastodon instance
|
|
pub struct MastodonUnauth {
|
|
client: Client,
|
|
base: url::Url,
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::clone::Clone for MastodonUnauth {
|
|
#[inline]
|
|
fn clone(&self) -> MastodonUnauth {
|
|
match *self {
|
|
MastodonUnauth { client: ref __self_0_0, base: ref __self_0_1 } =>
|
|
MastodonUnauth{client:
|
|
::core::clone::Clone::clone(&(*__self_0_0)),
|
|
base:
|
|
::core::clone::Clone::clone(&(*__self_0_1)),},
|
|
}
|
|
}
|
|
}
|
|
#[automatically_derived]
|
|
#[allow(unused_qualifications)]
|
|
impl ::core::fmt::Debug for MastodonUnauth {
|
|
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
|
|
match *self {
|
|
MastodonUnauth { client: ref __self_0_0, base: ref __self_0_1 } =>
|
|
{
|
|
let mut debug_trait_builder =
|
|
f.debug_struct("MastodonUnauth");
|
|
let _ = debug_trait_builder.field("client", &&(*__self_0_0));
|
|
let _ = debug_trait_builder.field("base", &&(*__self_0_1));
|
|
debug_trait_builder.finish()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
impl MastodonUnauth {
|
|
/// Create a new unauthenticated client
|
|
pub fn new(base: &str) -> Result<MastodonUnauth> {
|
|
let base =
|
|
if base.starts_with("https://") {
|
|
base.to_string()
|
|
} else {
|
|
{
|
|
let res =
|
|
::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["https://"],
|
|
&match (&base,)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}));
|
|
res
|
|
}
|
|
};
|
|
Ok(MastodonUnauth{client: Client::new(),
|
|
base: url::Url::parse(&base)?,})
|
|
}
|
|
}
|
|
impl MastodonUnauth {
|
|
fn route(&self, url: &str) -> Result<url::Url> {
|
|
Ok(self.base.join(url)?)
|
|
}
|
|
fn send(&self, req: RequestBuilder) -> Result<Response> {
|
|
let req = req.build()?;
|
|
Ok(self.client.execute(req)?)
|
|
}
|
|
}
|
|
impl MastodonUnauthenticated for MastodonUnauth {
|
|
/// GET /api/v1/statuses/:id
|
|
fn get_status(&self, id: &str) -> Result<Status> {
|
|
let route = self.route("/api/v1/statuses")?;
|
|
let route = route.join(id)?;
|
|
let response = self.send(self.client.get(route))?;
|
|
deserialise(response)
|
|
}
|
|
/// GET /api/v1/statuses/:id/context
|
|
fn get_context(&self, id: &str) -> Result<Context> {
|
|
let route = self.route("/api/v1/statuses")?;
|
|
let route = route.join(id)?;
|
|
let route = route.join("context")?;
|
|
let response = self.send(self.client.get(route))?;
|
|
deserialise(response)
|
|
}
|
|
/// GET /api/v1/statuses/:id/card
|
|
fn get_card(&self, id: &str) -> Result<Card> {
|
|
let route = self.route("/api/v1/statuses")?;
|
|
let route = route.join(id)?;
|
|
let route = route.join("card")?;
|
|
let response = self.send(self.client.get(route))?;
|
|
deserialise(response)
|
|
}
|
|
}
|
|
fn deserialise<T: for<'de> serde::Deserialize<'de>>(response: Response)
|
|
-> Result<T> {
|
|
let mut reader = Tap::new(response);
|
|
match serde_json::from_reader(&mut reader) {
|
|
Ok(t) => {
|
|
{
|
|
let lvl = ::log::Level::Debug;
|
|
if lvl <= ::log::STATIC_MAX_LEVEL && lvl <= ::log::max_level()
|
|
{
|
|
::log::__private_api_log(::core::fmt::Arguments::new_v1(&[""],
|
|
&match (&String::from_utf8_lossy(&reader.bytes),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}),
|
|
lvl,
|
|
&("elefren", "elefren",
|
|
"src/lib.rs", 845u32));
|
|
}
|
|
};
|
|
Ok(t)
|
|
}
|
|
Err(e) => {
|
|
{
|
|
let lvl = ::log::Level::Error;
|
|
if lvl <= ::log::STATIC_MAX_LEVEL && lvl <= ::log::max_level()
|
|
{
|
|
::log::__private_api_log(::core::fmt::Arguments::new_v1(&[""],
|
|
&match (&String::from_utf8_lossy(&reader.bytes),)
|
|
{
|
|
(arg0,)
|
|
=>
|
|
[::core::fmt::ArgumentV1::new(arg0,
|
|
::core::fmt::Display::fmt)],
|
|
}),
|
|
lvl,
|
|
&("elefren", "elefren",
|
|
"src/lib.rs", 851u32));
|
|
}
|
|
};
|
|
if let Ok(error) = serde_json::from_slice(&reader.bytes) {
|
|
return Err(Error::Api(error));
|
|
}
|
|
Err(e.into())
|
|
}
|
|
}
|
|
}
|