data: str
def str_for_log(self, name: str) -> str:
- 'Optimized for Client.log per-line listing.'
+ 'Optimized for Client._log per-line listing.'
listing = '+' if self.enabled else '-'
listing += f' {name}'
if self.data:
self.conn_setup.port = PORT_SSL
self.client_id = self.conn_setup.hostname
super().__init__(client_id=self.client_id, **kwargs)
- self.log = Logger(self._log)
+ self._log = Logger(self._do_log)
self.update_login(nick_confirmed=False,
nickname=self.conn_setup.nickname)
- self.log.add(f'connecting {self.conn_setup}')
+ self._log.add(f'connecting {self.conn_setup}')
self.start_connecting()
def start_connecting(self) -> None:
client_id=self.client_id)
self._client_trigger('_on_connect')
except IrcConnAbortException as e:
- self.log.alert(str(e))
+ self._log.alert(str(e))
except Exception as e: # pylint: disable=broad-exception-caught
self._put(ExceptionEvent(e))
def _on_connect(self) -> None:
'Steps to perform right after connection.'
assert self.conn is not None
- self.log.add('connected to server (SSL: '
- f'{"yes" if self.conn.ssl else "no"})',
- stream=STREAM_GLOB)
+ self._log.add('connected to server (SSL: '
+ f'{"yes" if self.conn.ssl else "no"})',
+ stream=STREAM_GLOB)
self._caps.challenge('LS', '302')
self.send(IrcMessage(verb='USER',
params=(getuser(), '0', '*',
self.send(IrcMessage(verb='NICK', params=(self.conn_setup.nickname,)))
@abstractmethod
- def _log(self, msg: str, stream: str = STREAM_SERVER) -> None:
+ def _do_log(self, msg: str, stream: str = STREAM_SERVER) -> None:
'Write msg into log of stream, whatever shape that may have.'
def send(self,
) -> None:
'Send line-separator-delimited message over socket.'
if not self.conn:
- self.log.alert('cannot send, connection seems closed')
+ self._log.alert('cannot send, connection seems closed')
return
self.conn.send(msg)
if to_log:
- self.log.add(to_log, prefix='', stream=stream)
- self.log.add(msg.raw, prefix=_LOG_PREFIX_SEND_RAW, stream=STREAM_RAW)
+ self._log.add(to_log, prefix='', stream=stream)
+ self._log.add(msg.raw, prefix=_LOG_PREFIX_SEND_RAW, stream=STREAM_RAW)
def update_login(self, nick_confirmed: bool, nickname: str = '') -> None:
'''Manage conn_setup.nickname, .nick_confirmed.
verb = ('set' if first_run
else f'changed from "{self.conn_setup.nickname}"')
self.conn_setup.nickname = nickname
- self.log.add(f'{prefix} {verb} to "{nickname}"',
- stream=STREAM_GLOB)
+ self._log.add(f'{prefix} {verb} to "{nickname}"',
+ stream=STREAM_GLOB)
if first_run or nick_confirmed != self.nick_confirmed:
self.nick_confirmed = nick_confirmed
if not first_run:
- self.log.add(f'{prefix} {"" if nick_confirmed else "un"}'
- 'confirmed')
+ self._log.add(f'{prefix} {"" if nick_confirmed else "un"}'
+ 'confirmed')
def close(self) -> None:
'Close both recv Loop and socket.'
- self.log.add(msg='disconnecting from server', stream=STREAM_GLOB)
+ self._log.add(msg='disconnecting from server', stream=STREAM_GLOB)
self._caps.clear()
if self.conn:
self.conn.close()
def handle_msg(self, msg: IrcMessage) -> None:
'Process incoming msg towards appropriate client steps.'
- self.log.add(msg.raw, prefix=_LOG_PREFIX_RECV_RAW, stream=STREAM_RAW)
+ self._log.add(msg.raw, prefix=_LOG_PREFIX_RECV_RAW, stream=STREAM_RAW)
match msg.verb:
case 'PING':
self.send(IrcMessage(verb='PONG', params=(msg.params[0],)))
self.update_login(nickname=msg.params[0], nick_confirmed=True)
case 'PRIVMSG':
nickname = msg.source.split('!')[0]
- self.log.add(f'< [{nickname}] {msg.params[-1]}',
- stream=nickname,
- prefix=_LOG_PREFIX_PRIVMSG)
+ self._log.add(f'< [{nickname}] {msg.params[-1]}',
+ stream=nickname,
+ prefix=_LOG_PREFIX_PRIVMSG)
case 'CAP':
for to_log in self._caps.process_msg(msg.params[1:]):
- self.log.add(to_log)
+ self._log.add(to_log)
if self._caps.sasl_wait:
if self.conn_setup.password:
self.send(IrcMessage('AUTHENTICATE', ('PLAIN',)))
self.send(IrcMessage('AUTHENTICATE', (auth,)))
case '903' | '904':
if msg.verb == '904':
- self.log.alert('SASL authentication failed')
+ self._log.alert('SASL authentication failed')
self._caps.challenge('END')