#[cfg(feature = "http")]
use racal::Queryable;
use serde::{Deserialize, Serialize};
#[cfg(feature = "ws")]
use super::{RequestType, Requestable};
#[cfg(feature = "http")]
use crate::{
model::{Friends, ResponseDataWrapper},
query::SavedLoginCredentials,
};
#[cfg(feature = "http")]
#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
pub struct FriendList();
#[cfg(feature = "http")]
impl Queryable<SavedLoginCredentials, ResponseDataWrapper<Friends>>
for FriendList
{
fn url(&self, _: &SavedLoginCredentials) -> String {
format!("{}/friends", crate::API_V1_HTTP_URL)
}
}
#[cfg(feature = "http")]
#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
pub struct FriendRequests();
#[cfg(feature = "http")]
impl
Queryable<
SavedLoginCredentials,
ResponseDataWrapper<crate::model::FriendRequests>,
> for FriendRequests
{
fn url(&self, _: &SavedLoginCredentials) -> String {
format!("{}/friends/requests", crate::API_V1_HTTP_URL)
}
}
#[cfg(feature = "ws")]
#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct FriendRequest {
pub id: crate::id::Invite,
}
#[cfg(feature = "ws")]
impl Requestable for FriendRequest {
fn request_type(&self) -> RequestType { RequestType::FriendRequestSend }
}
#[cfg(feature = "ws")]
#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct AcceptFriendRequest {
pub id: crate::id::Invite,
}
#[cfg(feature = "ws")]
impl Requestable for AcceptFriendRequest {
fn request_type(&self) -> RequestType { RequestType::FriendRequestAccept }
}
#[cfg(feature = "ws")]
#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct DeclineFriendRequest {
pub id: crate::id::Invite,
}
#[cfg(feature = "ws")]
impl Requestable for DeclineFriendRequest {
fn request_type(&self) -> RequestType { RequestType::FriendRequestDecline }
}
#[cfg(feature = "ws")]
#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct UnFriend {
pub id: crate::id::Invite,
}
#[cfg(feature = "ws")]
impl Requestable for UnFriend {
fn request_type(&self) -> RequestType { RequestType::UnFriend }
}