0fffb7e6918cfcb6482235c26505915dc605c0b9
[cloogle-irc.git] / IRC.dcl
1 definition module IRC
2
3 from Data.Maybe import :: Maybe
4 from Data.Either import :: Either
5 from StdOverloaded import class fromInt, class toInt, class toString, class fromString
6
7 :: IRCMessage =
8 { irc_prefix :: Maybe (Either String IRCUser)
9 , irc_command :: IRCCommand}
10
11 :: IRCUser =
12 { irc_nick :: String
13 , irc_user :: Maybe String
14 , irc_host :: Maybe String
15 }
16
17 instance toString IRCCommand, IRCReplies, IRCErrors, IRCMessage, IRCUser
18 instance fromInt IRCReplies, IRCErrors
19 instance toInt IRCReplies, IRCErrors
20
21 :: IRCCommand
22 = ADMIN (Maybe String)
23 | AWAY String
24 | CONNECT String (Maybe (Int, Maybe String))
25 | DIE
26 | ERROR String
27 | INFO (Maybe String)
28 | INVITE String String
29 | ISON [String]
30 | JOIN [(String, Maybe String)]
31 | KICK String String (Maybe String)
32 | KILL String String
33 | LINKS (Maybe (Maybe String, String))
34 | LIST (Maybe ([String], Maybe String))
35 | LUSERS (Maybe (String, Maybe String))
36 | MODE String String (Maybe String) (Maybe String) (Maybe String)
37 | MOTD (Maybe String)
38 | NAMES [String]
39 | NICK String (Maybe String)
40 | NJOIN
41 | NOTICE String String
42 | OPER String String
43 | PART [String]
44 | PASS String
45 | PING String (Maybe String)
46 | PONG String (Maybe String)
47 | PRIVMSG [String] String
48 | QUIT (Maybe String)
49 | REHASH
50 | RESTART
51 | SERVER
52 | SERVICE String String String String
53 | SERVLIST (Maybe (String, Maybe String))
54 | SQUERY String String
55 | SQUIRT
56 | SQUIT String String
57 | STATS (Maybe (String, Maybe String))
58 | SUMMON String (Maybe (String, Maybe String))
59 | TIME (Maybe String)
60 | TOPIC String (Maybe String)
61 | TRACE (Maybe String)
62 | USER String String String
63 | USERHOST [String]
64 | USERS (Maybe String)
65 | VERSION (Maybe String)
66 | WALLOPS String
67 | WHO (Maybe String)
68 | WHOIS (Maybe String) [String]
69 | WHOWAS (Maybe String) [String]
70
71 :: IRCReplies = RPL_WELCOME | RPL_YOURHOST | RPL_CREATED | RPL_MYINFO |
72 RPL_BOUNCE | RPL_TRACELINK | RPL_TRACECONNECTING | RPL_TRACEHANDSHAKE |
73 RPL_TRACEUNKNOWN | RPL_TRACEOPERATOR | RPL_TRACEUSER | RPL_TRACESERVER |
74 RPL_TRACESERVICE | RPL_TRACENEWTYPE | RPL_TRACECLASS | RPL_TRACERECONNECT |
75 RPL_STATSLINKINFO | RPL_STATSCOMMANDS | RPL_ENDOFSTATS | RPL_UMODEIS |
76 RPL_SERVLIST | RPL_SERVLISTEND | RPL_STATSUPTIME | RPL_STATSOLINE |
77 RPL_LUSERCLIENT | RPL_LUSEROP | RPL_LUSERUNKNOWN | RPL_LUSERCHANNELS |
78 RPL_LUSERME | RPL_ADMINME | RPL_ADMINLOC1 | RPL_ADMINLOC2 | RPL_ADMINEMAIL |
79 RPL_TRACELOG | RPL_TRACEEND | RPL_TRYAGAIN | RPL_AWAY | RPL_USERHOST |
80 RPL_ISON | RPL_UNAWAY | RPL_NOWAWAY | RPL_WHOISUSER | RPL_WHOISSERVER |
81 RPL_WHOISOPERATOR | RPL_WHOWASUSER | RPL_ENDOFWHO | RPL_WHOISIDLE |
82 RPL_ENDOFWHOIS | RPL_WHOISCHANNELS | RPL_LISTSTART | RPL_LIST |
83 RPL_LISTEND | RPL_CHANNELMODEIS | RPL_UNIQOPIS | RPL_NOTOPIC | RPL_TOPIC |
84 RPL_INVITING | RPL_SUMMONING | RPL_INVITELIST | RPL_ENDOFINVITELIST |
85 RPL_EXCEPTLIST | RPL_ENDOFEXCEPTLIST | RPL_VERSION | RPL_WHOREPLY |
86 RPL_NAMREPLY | RPL_LINKS | RPL_ENDOFLINKS | RPL_ENDOFNAMES | RPL_BANLIST |
87 RPL_ENDOFBANLIST | RPL_ENDOFWHOWAS | RPL_INFO | RPL_MOTD | RPL_ENDOFINFO |
88 RPL_MOTDSTART | RPL_ENDOFMOTD | RPL_YOUREOPER | RPL_REHASHING |
89 RPL_YOURESERVICE | RPL_TIME | RPL_USERSSTART | RPL_USERS | RPL_ENDOFUSERS |
90 RPL_NOUSERS
91
92 :: IRCErrors = ERR_NOSUCHNICK | ERR_NOSUCHSERVER | ERR_NOSUCHCHANNEL |
93 ERR_CANNOTSENDTOCHAN | ERR_TOOMANYCHANNELS | ERR_WASNOSUCHNICK |
94 ERR_TOOMANYTARGETS | ERR_NOSUCHSERVICE | ERR_NOORIGIN | ERR_NORECIPIENT |
95 ERR_NOTEXTTOSEND | ERR_NOTOPLEVEL | ERR_WILDTOPLEVEL | ERR_BADMASK |
96 ERR_UNKNOWNCOMMAND | ERR_NOMOTD | ERR_NOADMININFO | ERR_FILEERROR |
97 ERR_NONICKNAMEGIVEN | ERR_ERRONEUSNICKNAME | ERR_NICKNAMEINUSE |
98 ERR_NICKCOLLISION | ERR_UNAVAILRESOURCE | ERR_USERNOTINCHANNEL |
99 ERR_NOTONCHANNEL | ERR_USERONCHANNEL | ERR_NOLOGIN | ERR_SUMMONDISABLED |
100 ERR_USERSDISABLED | ERR_NOTREGISTERED | ERR_NEEDMOREPARAMS |
101 ERR_ALREADYREGISTRED | ERR_NOPERMFORHOST | ERR_PASSWDMISMATCH |
102 ERR_YOUREBANNEDCREEP | ERR_YOUWILLBEBANNED | ERR_KEYSET | ERR_CHANNELISFULL |
103 ERR_UNKNOWNMODE | ERR_INVITEONLYCHAN | ERR_BANNEDFROMCHAN |
104 ERR_BADCHANNELKEY | ERR_BADCHANMASK | ERR_NOCHANMODES | ERR_BANLISTFULL |
105 ERR_NOPRIVILEGES | ERR_CHANOPRIVSNEEDED | ERR_CANTKILLSERVER |
106 ERR_RESTRICTED | ERR_UNIQOPPRIVSNEEDED | ERR_NOOPERHOST |
107 ERR_UMODEUNKNOWNFLAG | ERR_USERSDONTMATCH