twilight_model/oauth/
application_integration_type.rs1use serde::{Deserialize, Serialize};
2
3use super::InstallParams;
4
5#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
6#[non_exhaustive]
7#[serde(from = "u8", into = "u8")]
8pub enum ApplicationIntegrationType {
9 GuildInstall,
10 UserInstall,
11 Unknown(u8),
13}
14
15impl ApplicationIntegrationType {
16 pub const fn kind(self) -> &'static str {
17 match self {
18 Self::GuildInstall => "GUILD_INSTALL",
19 Self::UserInstall => "USER_INSTALL",
20 Self::Unknown(_) => "Unknown",
21 }
22 }
23}
24
25impl From<u8> for ApplicationIntegrationType {
26 fn from(value: u8) -> Self {
27 match value {
28 0 => Self::GuildInstall,
29 1 => Self::UserInstall,
30 unknown => Self::Unknown(unknown),
31 }
32 }
33}
34
35impl From<ApplicationIntegrationType> for u8 {
36 fn from(value: ApplicationIntegrationType) -> Self {
37 match value {
38 ApplicationIntegrationType::GuildInstall => 0,
39 ApplicationIntegrationType::UserInstall => 1,
40 ApplicationIntegrationType::Unknown(unknown) => unknown,
41 }
42 }
43}
44
45#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
46pub struct ApplicationIntegrationMap<Guild, User = Guild> {
47 #[serde(rename = "0")]
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub guild: Option<Guild>,
50 #[serde(rename = "1")]
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub user: Option<User>,
53}
54
55#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
56pub struct ApplicationIntegrationTypeConfig {
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub oauth2_install_params: Option<InstallParams>,
59}