243 lines
5.9 KiB
Rust
243 lines
5.9 KiB
Rust
macro_rules! make_irc_command_enum {
|
|
|
|
($variant:ident) => {
|
|
$variant
|
|
};
|
|
|
|
($($variant:ident: $value:expr),+) => {
|
|
#[allow(non_camel_case_types)]
|
|
#[derive(Debug)]
|
|
pub enum IrcCommand {
|
|
UNKNOWN,
|
|
$($variant),+
|
|
}
|
|
|
|
impl From<&str> for IrcCommand {
|
|
fn from(command_str: &str) -> Self {
|
|
match command_str {
|
|
$($value => Self::$variant,)+
|
|
_ => Self::UNKNOWN,
|
|
}
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
make_irc_command_enum!(
|
|
ADMIN: "ADMIN",
|
|
AWAY: "AWAY",
|
|
CNOTICE: "CNOTICE",
|
|
CPRIVMSG: "CPRIVMSG",
|
|
CONNECT: "CONNECT",
|
|
DIE: "DIE",
|
|
ENCAP: "ENCAP",
|
|
ERROR: "ERROR",
|
|
HELP: "HELP",
|
|
INFO: "INFO",
|
|
INVITE: "INVITE",
|
|
ISON: "ISON",
|
|
JOIN: "JOIN",
|
|
KICK: "KICK",
|
|
KILL: "KILL",
|
|
KNOCK: "KNOCK",
|
|
LINKS: "LINKS",
|
|
LIST: "LIST",
|
|
LUSERS: "LUSERS",
|
|
MODE: "MODE",
|
|
MOTD: "MOTD",
|
|
NAMES: "NAMES",
|
|
NICK: "NICK",
|
|
NOTICE: "NOTICE",
|
|
OPER: "OPER",
|
|
PART: "PART",
|
|
PASS: "PASS",
|
|
PING: "PING",
|
|
PONG: "PONG",
|
|
PRIVMSG: "PRIVMSG",
|
|
QUIT: "QUIT",
|
|
REHASH: "REHASH",
|
|
RULES: "RULES",
|
|
SERVER: "SERVER",
|
|
SERVICE: "SERVICE",
|
|
SERVLIST: "SERVLIST",
|
|
SQUERY: "SQUERY",
|
|
SQUIT: "SQUIT",
|
|
SETNAME: "SETNAME",
|
|
SILENCE: "SILENCE",
|
|
STATS: "STATS",
|
|
SUMMON: "SUMMON",
|
|
TIME: "TIME",
|
|
TOPIC: "TOPIC",
|
|
TRACE: "TRACE",
|
|
USER: "USER",
|
|
USERHOST: "USERHOST",
|
|
USERIP: "USERIP",
|
|
USERS: "USERS",
|
|
VERSION: "VERSION",
|
|
WALLOPS: "WALLOPS",
|
|
WATCH: "WATCH",
|
|
WHO: "WHO",
|
|
WHOIS: "WHOIS",
|
|
WHOWAS: "WHOWAS",
|
|
RPL_WELCOME: "001",
|
|
RPL_YOURHOST: "002",
|
|
RPL_CREATED: "003",
|
|
RPL_MYINFO: "004",
|
|
RPL_BOUNCE: "005",
|
|
RPL_TRACELINK: "200",
|
|
RPL_TRACECONNECTING: "201",
|
|
RPL_TRACEHANDSHAKE: "202",
|
|
RPL_TRACEUNKNOWN: "203",
|
|
RPL_TRACEOPERATOR: "204",
|
|
RPL_TRACEUSER: "205",
|
|
RPL_TRACESERVER: "206",
|
|
RPL_TRACESERVICE: "207",
|
|
RPL_TRACENEWTYPE: "208",
|
|
RPL_TRACECLASS: "209",
|
|
RPL_TRACERECONNECT: "210",
|
|
RPL_STATSLINKINFO: "211",
|
|
RPL_STATSCOMMANDS: "212",
|
|
RPL_STATSCLINE: "213",
|
|
RPL_STATSNLINE: "214",
|
|
RPL_STATSILINE: "215",
|
|
RPL_STATSKLINE: "216",
|
|
RPL_STATSQLINE: "217",
|
|
RPL_STATSYLINE: "218",
|
|
RPL_ENDOFSTATS: "219",
|
|
RPL_UMODEIS: "221",
|
|
RPL_SERVICEINFO: "231",
|
|
RPL_ENDOFSERVICES: "232",
|
|
RPL_SERVICE: "233",
|
|
RPL_SERVLIST: "234",
|
|
RPL_SERVLISTEND: "235",
|
|
RPL_STATSVLINE: "240",
|
|
RPL_STATSLLINE: "241",
|
|
RPL_STATSUPTIME: "242",
|
|
RPL_STATSOLINE: "243",
|
|
RPL_STATSHLINE: "244",
|
|
RPL_STATSPING: "246",
|
|
RPL_STATSBLINE: "247",
|
|
RPL_STATSDLINE: "250",
|
|
RPL_LUSERCLIENT: "251",
|
|
RPL_LUSEROP: "252",
|
|
RPL_LUSERUNKNOWN: "253",
|
|
RPL_LUSERCHANNELS: "254",
|
|
RPL_LUSERME: "255",
|
|
RPL_ADMINME: "256",
|
|
RPL_ADMINLOC1: "257",
|
|
RPL_ADMINLOC2: "258",
|
|
RPL_ADMINEMAIL: "259",
|
|
RPL_TRACELOG: "261",
|
|
RPL_TRACEEND: "262",
|
|
RPL_TRYAGAIN: "263",
|
|
RPL_NONE: "300",
|
|
RPL_AWAY: "301",
|
|
RPL_USERHOST: "302",
|
|
RPL_ISON: "303",
|
|
RPL_UNAWAY: "305",
|
|
RPL_NOWAWAY: "306",
|
|
RPL_WHOISUSER: "311",
|
|
RPL_WHOISSERVER: "312",
|
|
RPL_WHOISOPERATOR: "313",
|
|
RPL_WHOWASUSER: "314",
|
|
RPL_ENDOFWHO: "315",
|
|
RPL_WHOISCHANOP: "316",
|
|
RPL_WHOISIDLE: "317",
|
|
RPL_ENDOFWHOIS: "318",
|
|
RPL_WHOISCHANNELS: "319",
|
|
RPL_LISTSTART: "321",
|
|
RPL_LIST: "322",
|
|
RPL_LISTEND: "323",
|
|
RPL_CHANNELMODEIS: "324",
|
|
RPL_UNIQOPIS: "325",
|
|
RPL_NOTOPIC: "331",
|
|
RPL_TOPIC: "332",
|
|
RPL_INVITING: "341",
|
|
RPL_SUMMONING: "342",
|
|
RPL_INVITELIST: "346",
|
|
RPL_ENDOFINVITELIST: "347",
|
|
RPL_EXCEPTLIST: "348",
|
|
RPL_ENDOFEXCEPTLIST: "349",
|
|
RPL_VERSION: "351",
|
|
RPL_WHOREPLY: "352",
|
|
RPL_NAMREPLY: "353",
|
|
RPL_KILLDONE: "361",
|
|
RPL_CLOSING: "362",
|
|
RPL_CLOSEEND: "363",
|
|
RPL_LINKS: "364",
|
|
RPL_ENDOFLINKS: "365",
|
|
RPL_ENDOFNAMES: "366",
|
|
RPL_BANLIST: "367",
|
|
RPL_ENDOFBANLIST: "368",
|
|
RPL_ENDOFWHOWAS: "369",
|
|
RPL_INFO: "371",
|
|
RPL_MOTD: "372",
|
|
RPL_INFOSTART: "373",
|
|
RPL_ENDOFINFO: "374",
|
|
RPL_MOTDSTART: "375",
|
|
RPL_ENDOFMOTD: "376",
|
|
RPL_YOUREOPER: "381",
|
|
RPL_REHASHING: "382",
|
|
RPL_YOURESERVICE: "383",
|
|
RPL_MYPORTIS: "384",
|
|
RPL_TIME: "391",
|
|
RPL_USERSSTART: "392",
|
|
RPL_USERS: "393",
|
|
RPL_ENDOFUSERS: "394",
|
|
RPL_NOUSERS: "395",
|
|
ERR_NOSUCHNICK: "401",
|
|
ERR_NOSUCHSERVER: "402",
|
|
ERR_NOSUCHCHANNEL: "403",
|
|
ERR_CANNOTSENDTOCHAN: "404",
|
|
ERR_TOOMANYCHANNELS: "405",
|
|
ERR_WASNOSUCHNICK: "406",
|
|
ERR_TOOMANYTARGETS: "407",
|
|
ERR_NOSUCHSERVICE: "408",
|
|
ERR_NOORIGIN: "409",
|
|
ERR_NORECIPIENT: "411",
|
|
ERR_NOTEXTTOSEND: "412",
|
|
ERR_NOTOPLEVEL: "413",
|
|
ERR_WILDTOPLEVEL: "414",
|
|
ERR_BADMASK: "415",
|
|
ERR_UNKNOWNCOMMAND: "421",
|
|
ERR_NOMOTD: "422",
|
|
ERR_NOADMININFO: "423",
|
|
ERR_FILEERROR: "424",
|
|
ERR_NONICKNAMEGIVEN: "431",
|
|
ERR_ERRONEUSNICKNAME: "432",
|
|
ERR_NICKNAMEINUSE: "433",
|
|
ERR_NICKCOLLISION: "436",
|
|
ERR_UNAVAILRESOURCE: "437",
|
|
ERR_USERNOTINCHANNEL: "441",
|
|
ERR_NOTONCHANNEL: "442",
|
|
ERR_USERONCHANNEL: "443",
|
|
ERR_NOLOGIN: "444",
|
|
ERR_SUMMONDISABLED: "445",
|
|
ERR_USERSDISABLED: "446",
|
|
ERR_NOTREGISTERED: "451",
|
|
ERR_NEEDMOREPARAMS: "461",
|
|
ERR_ALREADYREGISTERED: "462",
|
|
ERR_NOPERMFORHOST: "463",
|
|
ERR_PASSWDMISMATCH: "464",
|
|
ERR_YOUREBANNEDCREEP: "465",
|
|
ERR_YOUWILLBEBANNED: "466",
|
|
ERR_KEYSET: "467",
|
|
ERR_CHANNELISFULL: "471",
|
|
ERR_UNKNOWNMODE: "472",
|
|
ERR_INVITEONLYCHAN: "473",
|
|
ERR_BANNEDFROMCHAN: "474",
|
|
ERR_BADCHANNELKEY: "475",
|
|
ERR_BADCHANMASK: "476",
|
|
ERR_NOCHANMODES: "477",
|
|
ERR_BANLISTFULL: "478",
|
|
ERR_NOPRIVILEGES: "481",
|
|
ERR_CHANOPRIVSNEEDED: "482",
|
|
ERR_CANTKILLSERVER: "483",
|
|
ERR_RESTRICTED: "484",
|
|
ERR_UNIQOPRIVSNEEDED: "485",
|
|
ERR_NOOPERHOST: "491",
|
|
ERR_NOSERVICEHOST: "492",
|
|
ERR_UMODEUNKNOWNFLAG: "501",
|
|
ERR_USERSDONTMATCH: "502"
|
|
);
|