mirror of https://github.com/jesopo/ircstates
store username and hostname from JOINs
This commit is contained in:
parent
7c112424d5
commit
62b6a478d1
|
@ -21,7 +21,9 @@ class Server(Named):
|
|||
def __init__(self, name: str):
|
||||
self.name = name
|
||||
|
||||
self.nickname = ""
|
||||
self.nickname = ""
|
||||
self.username: Optional[str] = None
|
||||
self.hostname: Optional[str] = None
|
||||
self.modes: List[str] = []
|
||||
self.motd: List[str] = []
|
||||
|
||||
|
@ -132,10 +134,19 @@ class Server(Named):
|
|||
channel = Channel(line.params[0])
|
||||
self.channels[channel_lower] = channel
|
||||
self.channel_users[channel] = {}
|
||||
if line.hostmask.username:
|
||||
self.username = line.hostmask.username
|
||||
if line.hostmask.hostname:
|
||||
self.hostname = line.hostmask.hostname
|
||||
|
||||
if channel_lower in self.channels:
|
||||
channel = self.channels[channel_lower]
|
||||
user = self.get_user(line.hostmask.nickname)
|
||||
if line.hostmask.username:
|
||||
user.username = line.hostmask.username
|
||||
if line.hostmask.hostname:
|
||||
user.hostname = line.hostmask.hostname
|
||||
|
||||
self.user_join(channel, user)
|
||||
|
||||
def _handle_part(self, nickname, channel_name):
|
||||
|
|
|
@ -3,7 +3,9 @@ from .named import Named
|
|||
|
||||
class User(Named):
|
||||
def __init__(self, nickname: str):
|
||||
self.nickname = nickname
|
||||
self.nickname = nickname
|
||||
self.username: Optional[str] = None
|
||||
self.hostname: Optional[str] = None
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"User(nickname={self.nickname!r})"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from .channel import *
|
||||
from .nickname import *
|
||||
from .mode import *
|
||||
from .motd import *
|
||||
from .channel import *
|
||||
from .user import *
|
||||
from .mode import *
|
||||
from .motd import *
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
import unittest
|
||||
import ircstates, irctokens
|
||||
|
||||
class NicknameTestChange(unittest.TestCase):
|
||||
def test_self_change(self):
|
||||
server = ircstates.Server("test")
|
||||
server.parse_tokens(irctokens.tokenise("001 nickname"))
|
||||
server.parse_tokens(irctokens.tokenise(":nickname NICK nickname2"))
|
||||
self.assertEqual(server.nickname, "nickname2")
|
||||
|
||||
def test_other_change(self):
|
||||
server = ircstates.Server("test")
|
||||
server.parse_tokens(irctokens.tokenise("001 nickname"))
|
||||
server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
|
||||
server.parse_tokens(irctokens.tokenise(":other JOIN #chan"))
|
||||
self.assertIn("other", server.users)
|
||||
|
||||
server.parse_tokens(irctokens.tokenise(":other NICK other2"))
|
||||
self.assertNotIn("other", server.users)
|
||||
self.assertIn("other2", server.users)
|
|
@ -0,0 +1,43 @@
|
|||
import unittest
|
||||
import ircstates, irctokens
|
||||
|
||||
class UserTestNicknameChange(unittest.TestCase):
|
||||
def test_self_change(self):
|
||||
server = ircstates.Server("test")
|
||||
server.parse_tokens(irctokens.tokenise("001 nickname"))
|
||||
server.parse_tokens(irctokens.tokenise(":nickname NICK nickname2"))
|
||||
self.assertEqual(server.nickname, "nickname2")
|
||||
|
||||
def test_other_change(self):
|
||||
server = ircstates.Server("test")
|
||||
server.parse_tokens(irctokens.tokenise("001 nickname"))
|
||||
server.parse_tokens(irctokens.tokenise(":nickname JOIN #chan"))
|
||||
server.parse_tokens(irctokens.tokenise(":other JOIN #chan"))
|
||||
self.assertIn("other", server.users)
|
||||
|
||||
server.parse_tokens(irctokens.tokenise(":other NICK other2"))
|
||||
self.assertNotIn("other", server.users)
|
||||
self.assertIn("other2", server.users)
|
||||
|
||||
class UserTestUserHost(unittest.TestCase):
|
||||
def test_both(self):
|
||||
server = ircstates.Server("test")
|
||||
server.parse_tokens(irctokens.tokenise("001 nickname"))
|
||||
server.parse_tokens(
|
||||
irctokens.tokenise(":nickname!user@host JOIN #chan"))
|
||||
self.assertEqual(server.username, "user")
|
||||
self.assertEqual(server.hostname, "host")
|
||||
|
||||
def test_user(self):
|
||||
server = ircstates.Server("test")
|
||||
server.parse_tokens(irctokens.tokenise("001 nickname"))
|
||||
server.parse_tokens(irctokens.tokenise(":nickname!user JOIN #chan"))
|
||||
self.assertEqual(server.username, "user")
|
||||
self.assertIsNone(server.hostname)
|
||||
|
||||
def test_user(self):
|
||||
server = ircstates.Server("test")
|
||||
server.parse_tokens(irctokens.tokenise("001 nickname"))
|
||||
server.parse_tokens(irctokens.tokenise(":nickname@host JOIN #chan"))
|
||||
self.assertIsNone(server.username)
|
||||
self.assertEqual(server.hostname, "host")
|
Loading…
Reference in New Issue