diff --git a/src/lib.rs b/src/lib.rs index ad924ae..b75e601 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -26,6 +26,7 @@ //! ``` #![deny( + // missing_docs, warnings, missing_debug_implementations, missing_copy_implementations, @@ -36,7 +37,6 @@ unused_import_braces, unused_qualifications )] -#![cfg_attr(test, deny(missing_docs))] #[macro_use] extern crate serde_derive; @@ -78,6 +78,7 @@ use page::Page; pub use data::Data; pub use errors::{ApiError, Error, Result}; +pub use mastodon_client::MastodonClient; pub use registration::Registration; pub use requests::statuses::StatusesRequest; pub use status_builder::StatusBuilder; @@ -94,6 +95,7 @@ pub mod errors; pub mod helpers; /// Contains trait for converting `reqwest::Request`s to `reqwest::Response`s pub mod http_send; +mod mastodon_client; /// Handling multiple pages of entities. pub mod page; /// Registering your app. @@ -125,161 +127,6 @@ pub struct Mastodon { pub data: Data, } -/// Represents the set of methods that a Mastodon Client can do, so that -/// implementations might be swapped out for testing -#[allow(unused)] -pub trait MastodonClient { - fn favourites(&self) -> Result> { - unimplemented!("This method was not implemented"); - } - fn blocks(&self) -> Result> { - unimplemented!("This method was not implemented"); - } - fn domain_blocks(&self) -> Result> { - unimplemented!("This method was not implemented"); - } - fn follow_requests(&self) -> Result> { - unimplemented!("This method was not implemented"); - } - fn get_home_timeline(&self) -> Result> { - unimplemented!("This method was not implemented"); - } - fn get_emojis(&self) -> Result> { - unimplemented!("This method was not implemented"); - } - fn mutes(&self) -> Result> { - unimplemented!("This method was not implemented"); - } - fn notifications(&self) -> Result> { - unimplemented!("This method was not implemented"); - } - fn reports(&self) -> Result> { - unimplemented!("This method was not implemented"); - } - fn followers(&self, id: &str) -> Result> { - unimplemented!("This method was not implemented"); - } - fn following(&self, id: &str) -> Result> { - unimplemented!("This method was not implemented"); - } - fn reblogged_by(&self, id: &str) -> Result> { - unimplemented!("This method was not implemented"); - } - fn favourited_by(&self, id: &str) -> Result> { - unimplemented!("This method was not implemented"); - } - fn unblock_domain(&self, domain: String) -> Result { - unimplemented!("This method was not implemented"); - } - fn instance(&self) -> Result { - unimplemented!("This method was not implemented"); - } - fn verify_credentials(&self) -> Result { - unimplemented!("This method was not implemented"); - } - fn report(&self, account_id: &str, status_ids: Vec<&str>, comment: String) -> Result { - unimplemented!("This method was not implemented"); - } - fn block_domain(&self, domain: String) -> Result { - unimplemented!("This method was not implemented"); - } - fn authorize_follow_request(&self, id: &str) -> Result { - unimplemented!("This method was not implemented"); - } - fn reject_follow_request(&self, id: &str) -> Result { - unimplemented!("This method was not implemented"); - } - fn search(&self, q: String, resolve: bool) -> Result { - unimplemented!("This method was not implemented"); - } - fn follows(&self, uri: Cow<'static, str>) -> Result { - unimplemented!("This method was not implemented"); - } - fn media(&self, file: Cow<'static, str>) -> Result { - unimplemented!("This method was not implemented"); - } - fn clear_notifications(&self) -> Result { - unimplemented!("This method was not implemented"); - } - fn get_account(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn follow(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn unfollow(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn block(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn unblock(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn mute(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn unmute(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn get_notification(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn get_status(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn get_context(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn get_card(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn reblog(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn unreblog(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn favourite(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn unfavourite(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn delete_status(&self, id: u64) -> Result { - unimplemented!("This method was not implemented"); - } - fn update_credentials(&self, changes: CredentialsBuilder) -> Result { - unimplemented!("This method was not implemented"); - } - fn new_status(&self, status: StatusBuilder) -> Result { - unimplemented!("This method was not implemented"); - } - fn get_public_timeline(&self, local: bool) -> Result> { - unimplemented!("This method was not implemented"); - } - fn get_tagged_timeline(&self, hashtag: String, local: bool) -> Result> { - unimplemented!("This method was not implemented"); - } - fn statuses<'a, 'b: 'a, S>(&'b self, id: &'b str, request: S) -> Result> - where - S: Into>>, - { - unimplemented!("This method was not implemented"); - } - fn relationships(&self, ids: &[&str]) -> Result> { - unimplemented!("This method was not implemented"); - } - fn search_accounts( - &self, - query: &str, - limit: Option, - following: bool, - ) -> Result> { - unimplemented!("This method was not implemented"); - } -} - impl Mastodon { methods![get, post, delete,]; diff --git a/src/mastodon_client.rs b/src/mastodon_client.rs new file mode 100644 index 0000000..d183321 --- /dev/null +++ b/src/mastodon_client.rs @@ -0,0 +1,210 @@ +use std::borrow::Cow; + +use entities::prelude::*; +use errors::Result; +use http_send::{HttpSend, HttpSender}; +use page::Page; +use requests::statuses::StatusesRequest; +use status_builder::StatusBuilder; + +/// Represents the set of methods that a Mastodon Client can do, so that +/// implementations might be swapped out for testing +#[allow(unused)] +pub trait MastodonClient { + /// GET /api/v1/favourites + fn favourites(&self) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/blocks + fn blocks(&self) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/domain_blocks + fn domain_blocks(&self) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/follow_requests + fn follow_requests(&self) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/timelines/home + fn get_home_timeline(&self) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/custom_emojis + fn get_emojis(&self) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/mutes + fn mutes(&self) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/notifications + fn notifications(&self) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/reports + fn reports(&self) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/accounts/:id/followers + fn followers(&self, id: &str) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/accounts/:id/following + fn following(&self, id: &str) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/statuses/:id/reblogged_by + fn reblogged_by(&self, id: &str) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/statuses/:id/favourited_by + fn favourited_by(&self, id: &str) -> Result> { + unimplemented!("This method was not implemented"); + } + /// DELETE /api/v1/domain_blocks + fn unblock_domain(&self, domain: String) -> Result { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/instance + fn instance(&self) -> Result { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/accounts/verify_credentials + fn verify_credentials(&self) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/reports + fn report(&self, account_id: &str, status_ids: Vec<&str>, comment: String) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/domain_blocks + fn block_domain(&self, domain: String) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/accounts/follow_requests/authorize + fn authorize_follow_request(&self, id: &str) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/accounts/follow_requests/reject + fn reject_follow_request(&self, id: &str) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/search + fn search(&self, q: String, resolve: bool) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/follows + fn follows(&self, uri: Cow<'static, str>) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/media + fn media(&self, file: Cow<'static, str>) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/notifications/clear + fn clear_notifications(&self) -> Result { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/accounts/:id + fn get_account(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/accounts/:id/follow + fn follow(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/accounts/:id/unfollow + fn unfollow(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/accounts/:id/block + fn block(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/accounts/:id/unblock + fn unblock(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/accounts/:id/mute + fn mute(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/accounts/:id/unmute + fn unmute(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/notifications/:id + fn get_notification(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/statuses/:id + fn get_status(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/statuses/:id/context + fn get_context(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/statuses/:id/card + fn get_card(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/statuses/:id/reblog + fn reblog(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/statuses/:id/unreblog + fn unreblog(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/statuses/:id/favourite + fn favourite(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/statuses/:id/unfavourite + fn unfavourite(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// DELETE /api/v1/statuses/:id + fn delete_status(&self, id: u64) -> Result { + unimplemented!("This method was not implemented"); + } + /// PATCH /api/v1/accounts/update_credentials + fn update_credentials(&self, changes: CredentialsBuilder) -> Result { + unimplemented!("This method was not implemented"); + } + /// POST /api/v1/statuses + fn new_status(&self, status: StatusBuilder) -> Result { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/timelines/public + fn get_public_timeline(&self, local: bool) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/timelines/tag/:hashtag + fn get_tagged_timeline(&self, hashtag: String, local: bool) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/accounts/:id/statuses + fn statuses<'a, 'b: 'a, S>(&'b self, id: &'b str, request: S) -> Result> + where + S: Into>>, + { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/accounts/relationships? + fn relationships(&self, ids: &[&str]) -> Result> { + unimplemented!("This method was not implemented"); + } + /// GET /api/v1/accounts/search?q=:query&limit=:limit&following=:following + fn search_accounts( + &self, + query: &str, + limit: Option, + following: bool, + ) -> Result> { + unimplemented!("This method was not implemented"); + } +}