aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Anshul Gupta <ansg191@anshulg.com> 2024-02-19 15:07:38 -0800
committerGravatar Anshul Gupta <ansg191@anshulg.com> 2024-02-20 18:47:16 -0800
commit912fa69c5112464797d3b48de48f837e79ecedd7 (patch)
tree3a2632e6b2a6f45b180471f652581d1f5fe0cae0
parenta44dc512448c3960dc2e6a85435bb0caa0a6c13a (diff)
downloadtrakt-users.tar.gz
trakt-users.tar.zst
trakt-users.zip
feat(api): adds user follower endpointsusers
-rw-r--r--trakt-rs/src/api/users.rs2
-rw-r--r--trakt-rs/src/api/users/follow.rs108
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;
+}