diff options
author | 2024-02-19 15:07:38 -0800 | |
---|---|---|
committer | 2024-02-20 18:47:16 -0800 | |
commit | 912fa69c5112464797d3b48de48f837e79ecedd7 (patch) | |
tree | 3a2632e6b2a6f45b180471f652581d1f5fe0cae0 | |
parent | a44dc512448c3960dc2e6a85435bb0caa0a6c13a (diff) | |
download | trakt-users.tar.gz trakt-users.tar.zst trakt-users.zip |
feat(api): adds user follower endpointsusers
-rw-r--r-- | trakt-rs/src/api/users.rs | 2 | ||||
-rw-r--r-- | trakt-rs/src/api/users/follow.rs | 108 |
2 files changed, 110 insertions, 0 deletions
diff --git a/trakt-rs/src/api/users.rs b/trakt-rs/src/api/users.rs index 42e2a0d..6ea4af8 100644 --- a/trakt-rs/src/api/users.rs +++ b/trakt-rs/src/api/users.rs @@ -104,3 +104,5 @@ pub mod settings { pub item_count: u32, } } + +pub mod follow; diff --git a/trakt-rs/src/api/users/follow.rs b/trakt-rs/src/api/users/follow.rs new file mode 100644 index 0000000..577b732 --- /dev/null +++ b/trakt-rs/src/api/users/follow.rs @@ -0,0 +1,108 @@ +//! Follower related endpoints + +pub mod pending_requests { + //! Get pending follow requests + //! + //! <https://trakt.docs.apiary.io/#reference/users/settings/get-pending-following-requests> + + use time::OffsetDateTime; + + use crate::smo::User; + + #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Default, trakt_macros::Request)] + #[trakt( + response = Response, + endpoint = "/users/requests/following", + auth = Required, + )] + pub struct Request; + + #[derive(Debug, Clone, Eq, PartialEq, Hash, serde::Deserialize, trakt_macros::Response)] + pub struct Response(Vec<ResponseItem>); + + #[derive(Debug, Clone, Eq, PartialEq, Hash, serde::Deserialize)] + pub struct ResponseItem { + pub id: u64, + #[serde(with = "time::serde::iso8601")] + pub requested_at: OffsetDateTime, + pub user: User, + } +} + +pub mod requests { + //! Get follow requests + //! + //! <https://trakt.docs.apiary.io/#reference/users/follower-requests/get-follow-requests> + + use time::OffsetDateTime; + + use crate::smo::User; + + #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Default, trakt_macros::Request)] + #[trakt( + response = Response, + endpoint = "/users/requests", + auth = Required, + )] + pub struct Request; + + #[derive(Debug, Clone, Eq, PartialEq, Hash, serde::Deserialize, trakt_macros::Response)] + pub struct Response(Vec<ResponseItem>); + + #[derive(Debug, Clone, Eq, PartialEq, Hash, serde::Deserialize)] + pub struct ResponseItem { + pub id: u64, + #[serde(with = "time::serde::iso8601")] + pub requested_at: OffsetDateTime, + pub user: User, + } +} + +pub mod approve { + //! Approve a follow request + //! + //! <https://trakt.docs.apiary.io/#reference/users/follower-requests/approve-follow-request> + + use time::OffsetDateTime; + + use crate::smo::User; + + #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, trakt_macros::Request)] + #[trakt( + response = Response, + endpoint = "/users/requests/{id}", + method = POST, + auth = Required, + )] + pub struct Request { + pub id: u64, + } + + #[derive(Debug, Clone, Eq, PartialEq, Hash, serde::Deserialize, trakt_macros::Response)] + pub struct Response { + #[serde(with = "time::serde::iso8601")] + pub followed_at: OffsetDateTime, + pub user: User, + } +} + +pub mod deny { + //! Deny a follow request + //! + //! <https://trakt.docs.apiary.io/#reference/users/approve-or-deny-follower-requests/deny-follow-request> + + #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, trakt_macros::Request)] + #[trakt( + response = Response, + endpoint = "/users/requests/{id}", + method = DELETE, + auth = Required, + )] + pub struct Request { + pub id: u64, + } + + #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, trakt_macros::Response)] + #[trakt(expected = NO_CONTENT)] + pub struct Response; +} |