1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
// TODO: with optional params

use strum::Display;

#[derive(Debug, Display)]
#[strum(serialize_all = "camelCase")]
pub enum Method {
    GetMe,
    LogOut,
    Close,
    SendMessage,
    ForwardMessage,
    CopyMessage,
    SendPhoto,
    SendAudio,
    SendDocument,
    SendVideo,
    SendAnimation,
    SendVoice,
    SendVideoNote,
    SendMediaGroup,
    SendLocation,
    SendVenue,
    SendContract,
    SendPoll,
    SendDice,
    SendChatAction,
    GetUserProfilePhotos,
    GetFile,
    BanChatMember,
    UnbanChatMember,
    RestrictChatMember,
    PromoteChatMember,
    SetChatAdministratorCustomTitle,
    BanChatSenderChat,
    UnbanChatSenderChat,
    SetChatPermissions,
    ExportChatInviteLink,
    CreateChatInviteLink,
    EditChatInviteLink,
    RevokeChatInviteLink,
    ApproveChatJoinRequest,
    DeclineChatJoinRequest,
    SetChatPhoto,
    DeleteChatPhoto,
    SetChatTitle,
    SetChatDescription,
    PinChatMessage,
    UnpinChatMessage,
    UnpinAllChatMessages,
    LeaveChat,
    GetChat,
    GetChatAdministrators,
    GetChatMemberCount,
    GetChatMember,
    SetChatStickerSet,
    DeleteChatStickerSet,
    GetForumTopicIconStickers,
    CreateForumTopic,
    EditForumTopic,
    CloseForumTopic,
    ReopenForumTopic,
    DeleteForumTopic,
    UnpinAllForumTopicMessages,
    EditGeneralForumTopic,
    CloseGeneralForumTopic,
    ReopenGeneralForumTopic,
    HideGeneralForumTopic,
    UnhideGeneralForumTopic,
    AnswerCallbackQuery,
    SetMyCommands,
    DeleteMyCommands,
    GetMyCommands,
    SetMyDescription,
    GetMyDescription,
    SetMyShortDescription,
    GetMyShortDescription,
    SetChatMenuButton,
    GetChatMenuButton,
    SetMyDefaultAdministratorRights,
    GetMyDefaultAdministratorRights,
    EditMessageText,
    EditMessageCaption,
    EditMessageMedia,
    EditMessageLiveLocation,
    StopMessageLiveLocation,
    EditMessageReplyMarkup,
    StopPoll,
    DeleteMessage,
}

#[cfg(test)]
mod tests {
    use crate::Method;

    #[test]
    fn test_display() {
        assert_eq!(
            String::from("sendMessage"),
            format!("{}", Method::SendMessage)
        );
        assert_eq!(
            String::from("editMessageMedia"),
            format!("{}", Method::EditMessageMedia),
        );
        assert_eq!(
            String::from("closeGeneralForumTopic"),
            format!("{}", Method::CloseGeneralForumTopic),
        );
    }
}