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")]
5pub enum WebhookType {
6 Incoming,
7 ChannelFollower,
8 Application,
10 Unknown(u8),
12}
13
14impl From<u8> for WebhookType {
15 fn from(value: u8) -> Self {
16 match value {
17 1 => WebhookType::Incoming,
18 2 => WebhookType::ChannelFollower,
19 3 => WebhookType::Application,
20 unknown => WebhookType::Unknown(unknown),
21 }
22 }
23}
24
25impl From<WebhookType> for u8 {
26 fn from(value: WebhookType) -> Self {
27 match value {
28 WebhookType::Incoming => 1,
29 WebhookType::ChannelFollower => 2,
30 WebhookType::Application => 3,
31 WebhookType::Unknown(unknown) => unknown,
32 }
33 }
34}
35
36impl Default for WebhookType {
37 fn default() -> Self {
38 Self::Incoming
39 }
40}
41
42#[cfg(test)]
43mod tests {
44 use super::WebhookType;
45 use serde_test::Token;
46
47 #[test]
48 fn default() {
49 assert_eq!(WebhookType::Incoming, WebhookType::default());
50 }
51
52 #[test]
53 fn variants() {
54 serde_test::assert_tokens(&WebhookType::Incoming, &[Token::U8(1)]);
55 serde_test::assert_tokens(&WebhookType::ChannelFollower, &[Token::U8(2)]);
56 serde_test::assert_tokens(&WebhookType::Application, &[Token::U8(3)]);
57 serde_test::assert_tokens(&WebhookType::Unknown(99), &[Token::U8(99)]);
58 }
59}