From 04b5b54212629f058bdab1ba55c89a3d417e0454 Mon Sep 17 00:00:00 2001 From: Paul Woolcock Date: Wed, 7 Oct 2020 05:44:48 -0400 Subject: Change builder style for requests --- src/lib.rs | 9 ++- src/mastodon_client.rs | 2 +- src/requests/directory.rs | 80 +++++++++++++++++++++++++ src/requests/filter.rs | 18 +++--- src/requests/mod.rs | 3 + src/requests/push.rs | 54 +++++++---------- src/requests/statuses.rs | 119 ++++++++++++++++++------------------- src/requests/update_credentials.rs | 47 ++++++--------- 8 files changed, 195 insertions(+), 137 deletions(-) create mode 100644 src/requests/directory.rs 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 { + fn update_credentials(&self, builder: UpdateCredsRequest) -> Result { 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 { + fn update_credentials(&self, builder: UpdateCredsRequest) -> Result { 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(b: &bool, s: S) -> Result { + 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, + limit: Option, + order: Option>, // 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>>(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 { + 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>>(&mut self, max_id: S) -> &mut Self { + pub fn max_id>>(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>>(&mut self, since_id: S) -> &mut Self { + pub fn since_id>>(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>>(&mut self, min_id: S) -> &mut Self { + pub fn min_id>>(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(&mut self, name: D) -> &mut Self { + pub fn display_name(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(&mut self, note: D) -> &mut Self { + pub fn note(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>(&mut self, path: P) -> &mut Self { + pub fn avatar>(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>(&mut self, path: P) -> &mut Self { + pub fn header>(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 { + pub(crate) fn build(self) -> Result { 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"); + let builder = UpdateCredsRequest::new().field_attribute("foo", "bar"); assert_eq!( builder, UpdateCredsRequest { @@ -313,8 +305,7 @@ mod tests { #[test] fn test_update_creds_request_build() { - let mut builder = UpdateCredsRequest::new(); - builder.display_name("test").note("a note"); + let builder = UpdateCredsRequest::new().display_name("test").note("a note"); let creds = builder.build().expect("Couldn't build Credentials"); assert_eq!( creds, -- cgit v1.2.3