summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Woolcock <paul@woolcock.us>2020-10-07 05:44:48 -0400
committerPaul Woolcock <paul@woolcock.us>2020-10-07 09:06:13 -0400
commit04b5b54212629f058bdab1ba55c89a3d417e0454 (patch)
treecfa3d85b0ae92589e0dac50f9cf6118d1567ed61
parent5a8dd3fd8411f763f26dff90ac2e92422785500a (diff)
Change builder style for requests
-rw-r--r--src/lib.rs9
-rw-r--r--src/mastodon_client.rs2
-rw-r--r--src/requests/directory.rs80
-rw-r--r--src/requests/filter.rs18
-rw-r--r--src/requests/mod.rs3
-rw-r--r--src/requests/push.rs54
-rw-r--r--src/requests/statuses.rs119
-rw-r--r--src/requests/update_credentials.rs47
8 files changed, 195 insertions, 137 deletions
diff --git a/src/lib.rs b/src/lib.rs
index cdc0a3c..c594387 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -98,6 +98,9 @@ pub use crate::{
/// Registering your App
pub mod apps;
+/// Async client
+#[cfg(feature = "async")]
+pub mod r#async;
/// Contains the struct that holds the client auth data
pub mod data;
/// Entities returned from the API
@@ -272,7 +275,7 @@ impl MastodonClient for Mastodon {
deserialise_blocking(response)
}
- fn update_credentials(&self, builder: &mut UpdateCredsRequest) -> Result<Account> {
+ fn update_credentials(&self, builder: UpdateCredsRequest) -> Result<Account> {
let changes = builder.build()?;
let url = self.route("/api/v1/accounts/update_credentials");
let response = self.send_blocking(self.client.patch(&url).json(&changes))?;
@@ -348,8 +351,8 @@ impl MastodonClient for Mastodon {
/// # token: "".into(),
/// # };
/// let client = Mastodon::from(data);
- /// let mut request = StatusesRequest::new();
- /// request.only_media();
+ /// let request = StatusesRequest::new()
+ /// .only_media();
/// let statuses = client.statuses("user-id", request)?;
/// # Ok(())
/// # }
diff --git a/src/mastodon_client.rs b/src/mastodon_client.rs
index d5e935b..f517608 100644
--- a/src/mastodon_client.rs
+++ b/src/mastodon_client.rs
@@ -192,7 +192,7 @@ pub trait MastodonClient {
unimplemented!("This method was not implemented");
}
/// PATCH /api/v1/accounts/update_credentials
- fn update_credentials(&self, builder: &mut UpdateCredsRequest) -> Result<Account> {
+ fn update_credentials(&self, builder: UpdateCredsRequest) -> Result<Account> {
unimplemented!("This method was not implemented");
}
/// POST /api/v1/statuses
diff --git a/src/requests/directory.rs b/src/requests/directory.rs
new file mode 100644
index 0000000..14ff2c4
--- /dev/null
+++ b/src/requests/directory.rs
@@ -0,0 +1,80 @@
+use crate::errors::Error;
+use serde::Serialize;
+use std::borrow::Cow;
+
+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)
+ }
+ }
+}
+
+/// Represents the options for the directory request
+#[derive(Debug, Clone, Default, PartialEq, Serialize)]
+pub struct DirectoryRequest<'a> {
+ offset: Option<usize>,
+ limit: Option<usize>,
+ order: Option<Cow<'a, str>>, // TODO enum
+ #[serde(skip_serializing_if = "bool_qs_serialize::is_false")]
+ #[serde(serialize_with = "bool_qs_serialize::serialize")]
+ local: bool,
+}
+impl<'a> DirectoryRequest<'a> {
+ /// make a new DirectoryRequest builder
+ pub fn new() -> Self {
+ DirectoryRequest::default()
+ }
+
+ /// sets the offset
+ pub fn offset(mut self, offset: usize) -> Self {
+ self.offset = Some(offset);
+ self
+ }
+
+ /// sets the limit
+ pub fn limit(mut self, limit: usize) -> Self {
+ self.limit = Some(limit);
+ self
+ }
+
+ /// sets the order
+ pub fn order<I: Into<Cow<'a, str>>>(mut self, order: I) -> Self {
+ self.order = Some(order.into());
+ self
+ }
+
+ /// sets the local
+ pub fn local(mut self) -> Self {
+ self.local = true;
+ self
+ }
+
+ /// Turns this builder into a querystring
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # extern crate elefren;
+ /// # use elefren::requests::DirectoryRequest;
+ /// let request = DirectoryRequest::new();
+ /// assert_eq!(
+ /// &request
+ /// .limit(10)
+ /// .to_querystring()
+ /// .expect("Couldn't serialize qs"),
+ /// "limit=10"
+ /// );
+ /// ```
+ pub fn to_querystring(&self) -> Result<String, Error> {
+ Ok(format!("{}", serde_qs::to_string(&self)?))
+ }
+}
diff --git a/src/requests/filter.rs b/src/requests/filter.rs
index e46cfba..7156243 100644
--- a/src/requests/filter.rs
+++ b/src/requests/filter.rs
@@ -38,19 +38,19 @@ impl AddFilterRequest {
}
/// Set `irreversible` to `true`
- pub fn irreversible(&mut self) -> &mut Self {
+ pub fn irreversible(mut self) -> Self {
self.irreversible = Some(true);
self
}
/// Set `whole_word` to `true`
- pub fn whole_word(&mut self) -> &mut Self {
+ pub fn whole_word(mut self) -> Self {
self.whole_word = Some(true);
self
}
/// Set `expires_in` to a duration
- pub fn expires_in(&mut self, d: Duration) -> &mut Self {
+ pub fn expires_in(mut self, d: Duration) -> Self {
self.expires_in = Some(d);
self
}
@@ -96,8 +96,7 @@ mod tests {
#[test]
fn test_irreversible() {
- let mut request = AddFilterRequest::new("foo", FilterContext::Home);
- request.irreversible();
+ let request = AddFilterRequest::new("foo", FilterContext::Home).irreversible();
assert_eq!(
request,
AddFilterRequest {
@@ -112,8 +111,7 @@ mod tests {
#[test]
fn test_whole_word() {
- let mut request = AddFilterRequest::new("foo", FilterContext::Home);
- request.whole_word();
+ let request = AddFilterRequest::new("foo", FilterContext::Home).whole_word();
assert_eq!(
request,
AddFilterRequest {
@@ -128,8 +126,7 @@ mod tests {
#[test]
fn test_expires_in() {
- let mut request = AddFilterRequest::new("foo", FilterContext::Home);
- request.expires_in(Duration::from_secs(300));
+ let request = AddFilterRequest::new("foo", FilterContext::Home).expires_in(Duration::from_secs(300));
assert_eq!(
request,
AddFilterRequest {
@@ -144,8 +141,7 @@ mod tests {
#[test]
fn test_serialize_request() {
- let mut request = AddFilterRequest::new("foo", FilterContext::Home);
- request.expires_in(Duration::from_secs(300));
+ let request = AddFilterRequest::new("foo", FilterContext::Home).expires_in(Duration::from_secs(300));
let ser = serde_json::to_string(&request).expect("Couldn't serialize");
assert_eq!(
ser,
diff --git a/src/requests/mod.rs b/src/requests/mod.rs
index 375ebd1..7f3a665 100644
--- a/src/requests/mod.rs
+++ b/src/requests/mod.rs
@@ -1,3 +1,5 @@
+/// Data structure for the MastodonClient::directory method
+pub use self::directory::DirectoryRequest;
/// Data structure for the MastodonClient::add_filter method
pub use self::filter::AddFilterRequest;
/// Data structure for the MastodonClient::add_push_subscription method
@@ -7,6 +9,7 @@ pub use self::statuses::StatusesRequest;
/// Data structure for the MastodonClient::update_credentials method
pub use self::update_credentials::UpdateCredsRequest;
+mod directory;
mod filter;
mod push;
mod statuses;
diff --git a/src/requests/push.rs b/src/requests/push.rs
index 970fe2c..4eb15f1 100644
--- a/src/requests/push.rs
+++ b/src/requests/push.rs
@@ -59,8 +59,8 @@ impl 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();
+/// let mut request = AddPushRequest::new("http://example.com/push/endpoint", &keys)
+/// .follow().reblog();
///
/// client.add_push_subscription(&request)?;
/// # Ok(())
@@ -111,7 +111,7 @@ impl AddPushRequest {
/// let mut request = AddPushRequest::new(push_endpoint, &keys);
/// request.follow();
/// ```
- pub fn follow(&mut self) -> &mut Self {
+ pub fn follow(mut self) -> Self {
self.follow = Some(true);
self
}
@@ -127,7 +127,7 @@ impl AddPushRequest {
/// let mut request = AddPushRequest::new(push_endpoint, &keys);
/// request.favourite();
/// ```
- pub fn favourite(&mut self) -> &mut Self {
+ pub fn favourite(mut self) -> Self {
self.favourite = Some(true);
self
}
@@ -143,7 +143,7 @@ impl AddPushRequest {
/// let mut request = AddPushRequest::new(push_endpoint, &keys);
/// request.reblog();
/// ```
- pub fn reblog(&mut self) -> &mut Self {
+ pub fn reblog(mut self) -> Self {
self.reblog = Some(true);
self
}
@@ -159,7 +159,7 @@ impl AddPushRequest {
/// let mut request = AddPushRequest::new(push_endpoint, &keys);
/// request.mention();
/// ```
- pub fn mention(&mut self) -> &mut Self {
+ pub fn mention(mut self) -> Self {
self.mention = Some(true);
self
}
@@ -232,8 +232,8 @@ impl AddPushRequest {
///
/// let client = Mastodon::from(data);
///
-/// let mut request = UpdatePushRequest::new("foobar");
-/// request.follow(true).reblog(true);
+/// let request = UpdatePushRequest::new("foobar")
+/// .follow(true).reblog(true);
///
/// client.update_push_data(&request)?;
/// # Ok(())
@@ -274,7 +274,7 @@ impl UpdatePushRequest {
/// let mut request = UpdatePushRequest::new("foobar");
/// request.follow(true);
/// ```
- pub fn follow(&mut self, follow: bool) -> &mut Self {
+ pub fn follow(mut self, follow: bool) -> Self {
self.follow = Some(follow);
self
}
@@ -288,7 +288,7 @@ impl UpdatePushRequest {
/// let mut request = UpdatePushRequest::new("foobar");
/// request.favourite(true);
/// ```
- pub fn favourite(&mut self, favourite: bool) -> &mut Self {
+ pub fn favourite(mut self, favourite: bool) -> Self {
self.favourite = Some(favourite);
self
}
@@ -302,7 +302,7 @@ impl UpdatePushRequest {
/// let mut request = UpdatePushRequest::new("foobar");
/// request.reblog(true);
/// ```
- pub fn reblog(&mut self, reblog: bool) -> &mut Self {
+ pub fn reblog(mut self, reblog: bool) -> Self {
self.reblog = Some(reblog);
self
}
@@ -316,7 +316,7 @@ impl UpdatePushRequest {
/// let mut request = UpdatePushRequest::new("foobar");
/// request.mention(true);
/// ```
- pub fn mention(&mut self, mention: bool) -> &mut Self {
+ pub fn mention(mut self, mention: bool) -> Self {
self.mention = Some(mention);
self
}
@@ -400,8 +400,7 @@ mod tests {
fn test_add_push_request_follow() {
let endpoint = "https://example.com/push/endpoint";
let keys = Keys::new("anetohias===", "oeatssah=");
- let mut req = AddPushRequest::new(endpoint, &keys);
- req.follow();
+ let req = AddPushRequest::new(endpoint, &keys).follow();
assert_eq!(
req,
AddPushRequest {
@@ -420,8 +419,7 @@ mod tests {
fn test_add_push_request_favourite() {
let endpoint = "https://example.com/push/endpoint";
let keys = Keys::new("anetohias===", "oeatssah=");
- let mut req = AddPushRequest::new(endpoint, &keys);
- req.favourite();
+ let req = AddPushRequest::new(endpoint, &keys).favourite();
assert_eq!(
req,
AddPushRequest {
@@ -439,8 +437,7 @@ mod tests {
fn test_add_push_request_reblog() {
let endpoint = "https://example.com/push/endpoint";
let keys = Keys::new("anetohias===", "oeatssah=");
- let mut req = AddPushRequest::new(endpoint, &keys);
- req.reblog();
+ let req = AddPushRequest::new(endpoint, &keys).reblog();
assert_eq!(
req,
AddPushRequest {
@@ -458,8 +455,7 @@ mod tests {
fn test_add_push_request_mention() {
let endpoint = "https://example.com/push/endpoint";
let keys = Keys::new("anetohias===", "oeatssah=");
- let mut req = AddPushRequest::new(endpoint, &keys);
- req.mention();
+ let req = AddPushRequest::new(endpoint, &keys).mention();
assert_eq!(
req,
AddPushRequest {
@@ -498,8 +494,7 @@ mod tests {
fn test_add_push_request_build() {
let endpoint = "https://example.com/push/endpoint";
let keys = Keys::new("anetohias===", "oeatssah=");
- let mut req = AddPushRequest::new(endpoint, &keys);
- req.follow().reblog();
+ let req = AddPushRequest::new(endpoint, &keys).follow().reblog();
let form = req.build().expect("Couldn't build form");
assert_eq!(
form,
@@ -540,8 +535,7 @@ mod tests {
#[test]
fn test_update_push_request_follow() {
- let mut req = UpdatePushRequest::new("some-id");
- req.follow(true);
+ let req = UpdatePushRequest::new("some-id").follow(true);
assert_eq!(
req,
UpdatePushRequest {
@@ -555,8 +549,7 @@ mod tests {
}
#[test]
fn test_update_push_request_favourite() {
- let mut req = UpdatePushRequest::new("some-id");
- req.favourite(true);
+ let req = UpdatePushRequest::new("some-id").favourite(true);
assert_eq!(
req,
UpdatePushRequest {
@@ -570,8 +563,7 @@ mod tests {
}
#[test]
fn test_update_push_request_reblog() {
- let mut req = UpdatePushRequest::new("some-id");
- req.reblog(true);
+ let req = UpdatePushRequest::new("some-id").reblog(true);
assert_eq!(
req,
UpdatePushRequest {
@@ -585,8 +577,7 @@ mod tests {
}
#[test]
fn test_update_push_request_mention() {
- let mut req = UpdatePushRequest::new("some-id");
- req.mention(true);
+ let req = UpdatePushRequest::new("some-id").mention(true);
assert_eq!(
req,
UpdatePushRequest {
@@ -615,8 +606,7 @@ mod tests {
#[test]
fn test_update_push_request_build() {
- let mut req = UpdatePushRequest::new("some-id");
- req.favourite(false);
+ let req = UpdatePushRequest::new("some-id").favourite(false);
let form = req.build();
assert_eq!(
form,
diff --git a/src/requests/statuses.rs b/src/requests/statuses.rs
index a546351..87baac6 100644
--- a/src/requests/statuses.rs
+++ b/src/requests/statuses.rs
@@ -25,8 +25,10 @@ mod bool_qs_serialize {
/// ```
/// # extern crate elefren;
/// # use elefren::StatusesRequest;
-/// let mut request = StatusesRequest::new();
-/// request.only_media().pinned().since_id("foo");
+/// let request = StatusesRequest::new()
+/// .only_media()
+/// .pinned()
+/// .since_id("foo");
/// # assert_eq!(&request.to_querystring().expect("Couldn't serialize qs")[..], "?only_media=1&pinned=1&since_id=foo");
/// ```
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
@@ -91,7 +93,7 @@ impl<'a> StatusesRequest<'a> {
/// # 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 {
+ pub fn only_media(mut self) -> Self {
self.only_media = true;
self
}
@@ -112,7 +114,7 @@ impl<'a> StatusesRequest<'a> {
/// "?exclude_reblogs=1"
/// );
/// ```
- pub fn exclude_reblogs(&mut self) -> &mut Self {
+ pub fn exclude_reblogs(mut self) -> Self {
self.exclude_reblogs = true;
self
}
@@ -133,7 +135,7 @@ impl<'a> StatusesRequest<'a> {
/// "?exclude_replies=1"
/// );
/// ```
- pub fn exclude_replies(&mut self) -> &mut Self {
+ pub fn exclude_replies(mut self) -> Self {
self.exclude_replies = true;
self
}
@@ -154,7 +156,7 @@ impl<'a> StatusesRequest<'a> {
/// "?pinned=1"
/// );
/// ```
- pub fn pinned(&mut self) -> &mut Self {
+ pub fn pinned(mut self) -> Self {
self.pinned = true;
self
}
@@ -175,7 +177,7 @@ impl<'a> StatusesRequest<'a> {
/// "?max_id=foo"
/// );
/// ```
- pub fn max_id<S: Into<Cow<'a, str>>>(&mut self, max_id: S) -> &mut Self {
+ pub fn max_id<S: Into<Cow<'a, str>>>(mut self, max_id: S) -> Self {
self.max_id = Some(max_id.into());
self
}
@@ -196,7 +198,7 @@ impl<'a> StatusesRequest<'a> {
/// "?since_id=foo"
/// );
/// ```
- pub fn since_id<S: Into<Cow<'a, str>>>(&mut self, since_id: S) -> &mut Self {
+ pub fn since_id<S: Into<Cow<'a, str>>>(mut self, since_id: S) -> Self {
self.since_id = Some(since_id.into());
self
}
@@ -217,7 +219,7 @@ impl<'a> StatusesRequest<'a> {
/// "?limit=10"
/// );
/// ```
- pub fn limit(&mut self, limit: usize) -> &mut Self {
+ pub fn limit(mut self, limit: usize) -> Self {
self.limit = Some(limit);
self
}
@@ -238,7 +240,7 @@ impl<'a> StatusesRequest<'a> {
/// "?min_id=foobar"
/// );
/// ```
- pub fn min_id<S: Into<Cow<'a, str>>>(&mut self, min_id: S) -> &mut Self {
+ pub fn min_id<S: Into<Cow<'a, str>>>(mut self, min_id: S) -> Self {
self.min_id = Some(min_id.into());
self
}
@@ -289,8 +291,7 @@ mod tests {
#[test]
fn test_only_media() {
- let mut request = StatusesRequest::new();
- request.only_media();
+ let request = StatusesRequest::new().only_media();
assert_eq!(
request,
StatusesRequest {
@@ -308,8 +309,7 @@ mod tests {
#[test]
fn test_exclude_replies() {
- let mut request = StatusesRequest::new();
- request.exclude_replies();
+ let request = StatusesRequest::new().exclude_replies();
assert_eq!(
request,
StatusesRequest {
@@ -326,8 +326,7 @@ mod tests {
}
#[test]
fn test_pinned() {
- let mut request = StatusesRequest::new();
- request.pinned();
+ let request = StatusesRequest::new().pinned();
assert_eq!(
request,
StatusesRequest {
@@ -344,8 +343,7 @@ mod tests {
}
#[test]
fn test_max_id() {
- let mut request = StatusesRequest::new();
- request.max_id("foo");
+ let request = StatusesRequest::new().max_id("foo");
assert_eq!(
request,
StatusesRequest {
@@ -362,8 +360,7 @@ mod tests {
}
#[test]
fn test_since_id() {
- let mut request = StatusesRequest::new();
- request.since_id("foo");
+ let request = StatusesRequest::new().since_id("foo");
assert_eq!(
request,
StatusesRequest {
@@ -380,8 +377,7 @@ mod tests {
}
#[test]
fn test_limit() {
- let mut request = StatusesRequest::new();
- request.limit(42);
+ let request = StatusesRequest::new().limit(42);
assert_eq!(
request,
StatusesRequest {
@@ -398,8 +394,7 @@ mod tests {
}
#[test]
fn test_min_id() {
- let mut request = StatusesRequest::new();
- request.min_id("foo");
+ let request = StatusesRequest::new().min_id("foo");
assert_eq!(
request,
StatusesRequest {
@@ -419,8 +414,8 @@ mod tests {
macro_rules! qs_test {
(|$r:ident| $b:block, $expected:expr) => {
{
- let mut $r = StatusesRequest::new();
- $b
+ let $r = StatusesRequest::new();
+ let $r = $b;
let qs = $r.to_querystring().expect("Failed to serialize querystring");
assert_eq!(&qs, $expected);
}
@@ -429,217 +424,217 @@ mod tests {
qs_test!(
|request| {
- request.only_media();
+ request.only_media()
},
"?only_media=1"
);
qs_test!(
|request| {
- request.exclude_replies();
+ request.exclude_replies()
},
"?exclude_replies=1"
);
qs_test!(
|request| {
- request.pinned();
+ request.pinned()
},
"?pinned=1"
);
qs_test!(
|request| {
- request.max_id("foo");
+ request.max_id("foo")
},
"?max_id=foo"
);
qs_test!(
|request| {
- request.since_id("foo");
+ request.since_id("foo")
},
"?since_id=foo"
);
qs_test!(
|request| {
- request.limit(42);
+ request.limit(42)
},
"?limit=42"
);
qs_test!(
|request| {
- request.only_media().exclude_replies();
+ request.only_media().exclude_replies()
},
"?only_media=1&exclude_replies=1"
);
qs_test!(
|request| {
- request.only_media().pinned();
+ request.only_media().pinned()
},
"?only_media=1&pinned=1"
);
qs_test!(
|request| {
- request.only_media().max_id("foo");
+ request.only_media().max_id("foo")
},
"?only_media=1&max_id=foo"
);
qs_test!(
|request| {
- request.only_media().since_id("foo");
+ request.only_media().since_id("foo")
},
"?only_media=1&since_id=foo"
);
qs_test!(
|request| {
- request.only_media().limit(42);
+ request.only_media().limit(42)
},
"?only_media=1&limit=42"
);
qs_test!(
|request| {
- request.exclude_replies().only_media();
+ request.exclude_replies().only_media()
},
"?only_media=1&exclude_replies=1"
);
qs_test!(
|request| {
- request.exclude_replies().pinned();
+ request.exclude_replies().pinned()
},
"?exclude_replies=1&pinned=1"
);
qs_test!(
|request| {
- request.exclude_replies().max_id("foo");
+ request.exclude_replies().max_id("foo")
},
"?exclude_replies=1&max_id=foo"
);
qs_test!(
|request| {
- request.exclude_replies().since_id("foo");
+ request.exclude_replies().since_id("foo")
},
"?exclude_replies=1&since_id=foo"
);
qs_test!(
|request| {
- request.exclude_replies().limit(42);
+ request.exclude_replies().limit(42)
},
"?exclude_replies=1&limit=42"
);
qs_test!(
|request| {
- request.pinned().only_media();
+ request.pinned().only_media()
},
"?only_media=1&pinned=1"
);
qs_test!(
|request| {
- request.pinned().exclude_replies();
+ request.pinned().exclude_replies()
},
"?exclude_replies=1&pinned=1"
);
qs_test!(
|request| {
- request.pinned().max_id("foo");
+ request.pinned().max_id("foo")
},
"?pinned=1&max_id=foo"
);
qs_test!(
|request| {
- request.pinned().since_id("foo");
+ request.pinned().since_id("foo")
},
"?pinned=1&since_id=foo"
);
qs_test!(
|request| {
- request.pinned().limit(42);
+ request.pinned().limit(42)
},
"?pinned=1&limit=42"
);
qs_test!(
|request| {
- request.max_id("foo").only_media();
+ request.max_id("foo").only_media()
},
"?only_media=1&max_id=foo"
);
qs_test!(
|request| {
- request.max_id("foo").exclude_replies();
+ request.max_id("foo").exclude_replies()
},
"?exclude_replies=1&max_id=foo"
);
qs_test!(
|request| {
- request.max_id("foo").pinned();
+ request.max_id("foo").pinned()
},
"?pinned=1&max_id=foo"
);
qs_test!(
|request| {
- request.max_id("foo").since_id("foo");
+ request.max_id("foo").since_id("foo")
},
"?max_id=foo&since_id=foo"
);
qs_test!(
|request| {
- request.max_id("foo").limit(42);
+ request.max_id("foo").limit(42)
},
"?max_id=foo&limit=42"
);
qs_test!(
|request| {
- request.since_id("foo").only_media();
+ request.since_id("foo").only_media()
},
"?only_media=1&since_id=foo"
);
qs_test!(
|request| {
- request.since_id("foo").exclude_replies();
+ request.since_id("foo").exclude_replies()
},
"?exclude_replies=1&since_id=foo"
);
qs_test!(
|request| {
- request.since_id("foo").pinned();
+ request.since_id("foo").pinned()
},
"?pinned=1&since_id=foo"
);
qs_test!(
|request| {
- request.since_id("foo").max_id("foo");
+ request.since_id("foo").max_id("foo")
},
"?max_id=foo&since_id=foo"
);
qs_test!(
|request| {
- request.since_id("foo").limit(42);
+ request.since_id("foo").limit(42)
},
"?since_id=foo&limit=42"
);
qs_test!(
|request| {
- request.limit(42).only_media();
+ request.limit(42).only_media()
},
"?only_media=1&limit=42"
);
qs_test!(
|request| {
- request.limit(42).exclude_replies();
+ request.limit(42).exclude_replies()
},
"?exclude_replies=1&limit=42"
);
qs_test!(
|request| {
- request.limit(42).pinned();
+ request.limit(42).pinned()
},
"?pinned=1&limit=42"
);
qs_test!(
|request| {
- request.limit(42).max_id("foo");
+ request.limit(42).max_id("foo")
},
"?max_id=foo&limit=42"
);
qs_test!(
|request| {
- request.limit(42).since_id("foo");
+ request.limit(42).since_id("foo")
},
"?since_id=foo&limit=42"
);
diff --git a/src/requests/update_credentials.rs b/src/requests/update_credentials.rs
index a7a4693..18f279d 100644
--- a/src/requests/update_credentials.rs
+++ b/src/requests/update_credentials.rs
@@ -27,11 +27,10 @@ use crate::{
/// use elefren::{prelude::*, status_builder::Visibility, UpdateCredsRequest};
///
/// let client = Mastodon::from(data);
-/// let mut builder = UpdateCredsRequest::new();
+/// let builder = UpdateCredsRequest::new()
+/// .privacy(Visibility::Unlisted);
///
-/// builder.privacy(Visibility::Unlisted);
-///
-/// let result = client.update_credentials(&mut builder)?;
+/// let result = client.update_credentials(builder)?;
/// # Ok(())
/// # }
/// ```
@@ -75,7 +74,7 @@ impl UpdateCredsRequest {
///
/// builder.display_name("my new display name");
/// ```
- pub fn display_name<D: Display>(&mut self, name: D) -> &mut Self {
+ pub fn display_name<D: Display>(mut self, name: D) -> Self {
self.display_name = Some(name.to_string());
self
}
@@ -92,7 +91,7 @@ impl UpdateCredsRequest {
///
/// builder.note("my new note");
/// ```
- pub fn note<D: Display>(&mut self, note: D) -> &mut Self {
+ pub fn note<D: Display>(mut self, note: D) -> Self {
self.note = Some(note.to_string());
self
}
@@ -109,7 +108,7 @@ impl UpdateCredsRequest {
///
/// builder.avatar("/path/to/my/new/avatar");
/// ```
- pub fn avatar<P: AsRef<Path>>(&mut self, path: P) -> &mut Self {
+ pub fn avatar<P: AsRef<Path>>(mut self, path: P) -> Self {
let path = path.as_ref();
let path = path.to_path_buf();
self.avatar = Some(path);
@@ -128,7 +127,7 @@ impl UpdateCredsRequest {
///
/// builder.header("/path/to/my/new/header");
/// ```
- pub fn header<P: AsRef<Path>>(&mut self, path: P) -> &mut Self {
+ pub fn header<P: AsRef<Path>>(mut self, path: P) -> Self {
let path = path.as_ref();
let path = path.to_path_buf();
self.header = Some(path);
@@ -147,7 +146,7 @@ impl UpdateCredsRequest {
///
/// builder.privacy(Visibility::Public);
/// ```
- pub fn privacy(&mut self, privacy: status_builder::Visibility) -> &mut Self {
+ pub fn privacy(mut self, privacy: status_builder::Visibility) -> Self {
self.privacy = Some(privacy);
self
}
@@ -164,7 +163,7 @@ impl UpdateCredsRequest {
///
/// builder.sensitive(true);
/// ```
- pub fn sensitive(&mut self, sensitive: bool) -> &mut Self {
+ pub fn sensitive(mut self, sensitive: bool) -> Self {
self.sensitive = Some(sensitive);
self
}
@@ -181,12 +180,12 @@ impl UpdateCredsRequest {
///
/// builder.field_attribute("some key", "some value");
/// ```
- pub fn field_attribute(&mut self, name: &str, value: &str) -> &mut Self {
+ pub fn field_attribute(mut self, name: &str, value: &str) -> Self {
self.field_attributes.push(MetadataField::new(name, value));
self
}
- pub(crate) fn build(&mut self) -> Result<Credentials> {
+ pub(crate) fn build(self) -> Result<Credentials> {
Ok(Credentials {
display_name: self.display_name.clone(),
note: self.note.clone(),
@@ -222,8 +221,7 @@ mod tests {
#[test]
fn test_update_creds_request_display_name() {
- let mut builder = UpdateCredsRequest::new();
- builder.display_name("foo");
+ let builder = UpdateCredsRequest::new().display_name("foo");
assert_eq!(
builder,
UpdateCredsRequest {
@@ -235,8 +233,7 @@ mod tests {
#[test]
fn test_update_creds_request_note() {
- let mut builder = UpdateCredsRequest::new();
- builder.note("foo");
+ let builder = UpdateCredsRequest::new().note("foo");
assert_eq!(
builder,
UpdateCredsRequest {
@@ -248,8 +245,7 @@ mod tests {
#[test]
fn test_update_creds_request_avatar() {
- let mut builder = UpdateCredsRequest::new();
- builder.avatar("/path/to/avatar.png");
+ let builder = UpdateCredsRequest::new().avatar("/path/to/avatar.png");
assert_eq!(
builder,
UpdateCredsRequest {
@@ -261,8 +257,7 @@ mod tests {
#[test]
fn test_update_creds_request_header() {
- let mut builder = UpdateCredsRequest::new();
- builder.header("/path/to/header.png");
+ let builder = UpdateCredsRequest::new().header("/path/to/header.png");
assert_eq!(
builder,
UpdateCredsRequest {
@@ -274,8 +269,7 @@ mod tests {
#[test]
fn test_update_creds_request_privacy() {
- let mut builder = UpdateCredsRequest::new();
- builder.privacy(Visibility::Public);
+ let builder = UpdateCredsRequest::new().privacy(Visibility::Public);
assert_eq!(
builder,
UpdateCredsRequest {
@@ -287,8 +281,7 @@ mod tests {
#[test]
fn test_update_creds_request_sensitive() {
- let mut builder = UpdateCredsRequest::new();
- builder.sensitive(true);
+ let builder = UpdateCredsRequest::new().sensitive(true);
assert_eq!(
builder,
UpdateCredsRequest {
@@ -300,8 +293,7 @@ mod tests {
#[test]
fn test_update_creds_request_field_attribute() {
- let mut builder = UpdateCredsRequest::new();
- builder.field_attribute("foo", "bar");<