twilight_model/channel/webhook/
kind.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
4#[serde(from = "u8", into = "u8")]
5#[derive(Default)]
6pub enum WebhookType {
7 #[default]
8 Incoming,
9 ChannelFollower,
10 Application,
12 Unknown(u8),
14}
15
16impl From<u8> for WebhookType {
17 fn from(value: u8) -> Self {
18 match value {
19 1 => WebhookType::Incoming,
20 2 => WebhookType::ChannelFollower,
21 3 => WebhookType::Application,
22 unknown => WebhookType::Unknown(unknown),
23 }
24 }
25}
26
27impl From<WebhookType> for u8 {
28 fn from(value: WebhookType) -> Self {
29 match value {
30 WebhookType::Incoming => 1,
31 WebhookType::ChannelFollower => 2,
32 WebhookType::Application => 3,
33 WebhookType::Unknown(unknown) => unknown,
34 }
35 }
36}
37
38#[cfg(test)]
39mod tests {
40 use super::WebhookType;
41 use serde_test::Token;
42
43 #[test]
44 fn default() {
45 assert_eq!(WebhookType::Incoming, WebhookType::default());
46 }
47
48 #[test]
49 fn variants() {
50 serde_test::assert_tokens(&WebhookType::Incoming, &[Token::U8(1)]);
51 serde_test::assert_tokens(&WebhookType::ChannelFollower, &[Token::U8(2)]);
52 serde_test::assert_tokens(&WebhookType::Application, &[Token::U8(3)]);
53 serde_test::assert_tokens(&WebhookType::Unknown(99), &[Token::U8(99)]);
54 }
55}