use serde::{Deserialize, Serialize};
mod categories;
pub use categories::*;
mod friends;
pub use friends::*;
mod instances;
pub use instances::*;
mod users;
pub use users::*;
mod searches;
pub use searches::*;
mod worlds;
pub use worlds::*;
mod invites;
pub use invites::*;
#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
pub struct NoAuthentication {}
impl racal::FromApiState<Self> for NoAuthentication {
fn from_state(state: &Self) -> &Self { state }
}
impl racal::FromApiState<SavedLoginCredentials> for NoAuthentication {
fn from_state(_: &SavedLoginCredentials) -> &Self { &Self {} }
}
impl racal::FromApiState<Self> for SavedLoginCredentials {
fn from_state(state: &Self) -> &Self { state }
}
#[cfg(feature = "ws")]
#[derive(
Debug,
Clone,
PartialEq,
Eq,
Hash,
Deserialize,
Serialize,
strum::Display,
strum::AsRefStr,
strum::VariantNames,
)]
#[non_exhaustive]
#[allow(missing_docs)]
pub enum RequestType {
SelfOnline = 0,
FriendRequestSend = 5,
FriendRequestAccept = 6,
FriendRequestDecline = 7,
UnFriend = 8,
InviteSend = 10,
InviteExpire = 11,
RequestInvite = 15,
RequestInviteAccept = 16,
RequestInviteDecline = 17,
BlockUser = 30,
UnBlockUser = 31,
GlobalMessage = 100,
UserMessage = 101,
SystemGlobalAnnouncement = 110,
SystemUserAnnouncement = 111,
}
#[cfg(feature = "ws")]
pub trait Requestable {
fn request_type(&self) -> RequestType;
}
#[cfg(feature = "ws")]
#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct RequestWrapper<T> {
pub request_type: RequestType,
pub data: T,
}
#[cfg(feature = "ws")]
#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Online;
#[cfg(feature = "ws")]
impl Requestable for Online {
fn request_type(&self) -> RequestType { RequestType::SelfOnline }
}