aboutsummaryrefslogtreecommitdiff
path: root/src/utils/irc/protocol.py
diff options
context:
space:
mode:
authorGravatar jesopo2019-02-18 14:56:25 +0000
committerGravatar jesopo2019-02-18 14:58:27 +0000
commit186b6b82a2c36e28f35673e4bb0f71186674126c (patch)
tree3f3d19964644a39a0fb849abdfbc48cdd92fee15 /src/utils/irc/protocol.py
parentAdd missing : (diff)
signature
Shift formatting protocol data to it's own file: utils.irc.protocol
Diffstat (limited to 'src/utils/irc/protocol.py')
-rw-r--r--src/utils/irc/protocol.py81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/utils/irc/protocol.py b/src/utils/irc/protocol.py
new file mode 100644
index 00000000..6a1844f9
--- /dev/null
+++ b/src/utils/irc/protocol.py
@@ -0,0 +1,81 @@
+import typing
+from src import utils
+
+def user(username: str, realname: str) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("USER", [username, "0", "*", realname])
+def nick(nickname: str) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("NICK", [nickname])
+
+def capability_ls() -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("CAP", ["LS", "302"])
+def capability_request(capability: str) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("CAP", ["REQ", capability])
+def capability_end() -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("CAP", ["END"])
+def authenticate(text: str) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("AUTHENTICATE", [text])
+
+def password(password: str) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("PASS", [password])
+
+def ping(nonce: str="hello") -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("PING", [nonce])
+def pong(nonce: str="hello") -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("PONG", [nonce])
+
+def join(channel_name: str, keys: typing.List[str]
+ ) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("JOIN", [channel_name]+keys)
+def part(channel_name: str, reason: str=None) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("PART", [channel_name]+(
+ [reason] if reason else []))
+def quit(reason: str=None) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("QUIT", [reason] if reason else [])
+
+def message(target: str, message: str, tags: dict={}
+ ) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("PRIVMSG", [target, message], tags=tags)
+def notice(target: str, message: str, tags: dict={}
+ ) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("NOTICE", [target, message], tags=tags)
+def tagmsg(target, tags: dict) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("TAGMSG", [target], tags=tags)
+
+def mode(target: str, mode: str=None, args: typing.List[str]=None
+ ) -> 'utils.irc.IRCParsedLine':
+ command_args = [target]
+ if mode:
+ command_args.append(mode)
+ if args:
+ command_args = command_args+args
+ return utils.irc.IRCParsedLine("MODE", command_args)
+
+def topic(channel_name: str, topic: str) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("TOPIC", [channel_name, topic])
+def kick(channel_name: str, target: str, reason: str=None
+ ) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("KICK", [channel_name, target]+(
+ [reason] if reason else []))
+def names(channel_name: str) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("NAMES", [channel_name])
+def list(search_for: str=None) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("LIST", [search_for] if search_for else [])
+def invite(target: str, channel_name: str) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("INVITE", [target, channel_name])
+
+def whois(target: str) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("WHOIS", [target])
+def whowas(target: str, amount: int=None, server: str=None
+ ) -> 'utils.irc.IRCParsedLine':
+ command_args = [target]
+ if amount:
+ command_args.append(str(amount))
+ if server:
+ command_args.append(server)
+ return utils.irc.IRCParsedLine("WHOWAS", command_args)
+def who(filter: str=None) -> 'utils.irc.IRCParsedLine':
+ return utils.irc.IRCParsedLine("WHO", [filter] if filter else [])
+def whox(mask: str, filter: str, fields: str, label: str=None
+ ) -> 'utils.irc.IRCParsedLine':
+ flags = "%s%%%s%s" % (filter, fields, ","+label if label else "")
+ return utils.irc.IRCParsedLine("WHO", [mask, flags])