setattr(self.db, k, getattr(conn_setup, k))
if self.db.port <= 0:
self.db.port = PORT_SSL
- if not self.db.user_wanted:
- self.db.user_wanted = getuser()
+ for attr_name in {'nick_wanted', 'user_wanted', 'realname'}:
+ if not getattr(self.db, attr_name):
+ setattr(self.db, attr_name, getuser())
def connect(self) -> None:
'Attempt to open connection, on success perform session init steps.'
def cmd__connect(self,
host_port: str,
nickname_pw: str = '',
- username_realname: str = ''
+ realname_username: str = ''
) -> Optional[str]:
'Create Client and pass it via NewClientEvent.'
- split = host_port.split(':', maxsplit=1)
- hostname = split[0]
+ def from_split(input_: str) -> tuple[str, ...]:
+ return tuple(input_.split(':', maxsplit=1) if ':' in input_
+ else (input_, ''))
+ hostname, port_str = from_split(host_port)
if hostname in self._client_mngrs:
return f'already set up connection to {hostname}'
port = -1
- if len(split) > 1:
- to_int = split[1]
- if to_int.isdigit():
- port = int(split[1])
+ if port_str:
+ if port_str.isdigit():
+ port = int(port_str)
else:
- return f'invalid port number: {to_int}'
- split = nickname_pw.split(':', maxsplit=1)
- nickname = split[0] if nickname_pw else getuser()
- password = split[1] if len(split) > 1 else ''
- if not username_realname:
- username = ''
- realname = nickname
- elif ':' in username_realname:
- username, realname = username_realname.split(':', maxsplit=1)
- else:
- username = ''
- realname = username_realname
+ return f'invalid port number: {port_str}'
+ nickname, password = from_split(nickname_pw)
+ realname, username = from_split(realname_username)
setup = IrcConnSetup(
hostname, port, nickname, username, realname, password)
self._put(NewClientEvent(self._new_client(setup, set())))
# some simple expected command successes
> /help
0 # commands available in this window:
-0 # /connect HOST_PORT [NICKNAME_PW] [USERNAME_REALNAME]
+0 # /connect HOST_PORT [NICKNAME_PW] [REALNAME_USERNAME]
0 # /help
0 # /list
0 # /prompt_enter
# CONNECTED INTERACTIONS
# on /connect init databases, log in new windows
-> /connect foo.bar.baz foo:bar foobarbazquux:baz
+> /connect foo.bar.baz foo:bar baz:foobarbazquux
, $ DISCONNECTED
1 $ isupport cleared
1 $ isupport:CHANTYPES set to: [#&]
> /window 1
> /help
1 # commands available in this window:
-1 # /connect HOST_PORT [NICKNAME_PW] [USERNAME_REALNAME]
+1 # /connect HOST_PORT [NICKNAME_PW] [REALNAME_USERNAME]
1 # /disconnect [QUIT_MSG]
1 # /help
1 # /join CHANNEL