mirror of
https://github.com/jlu5/PyLink.git
synced 2024-11-24 03:29:28 +01:00
relay: use base64 as fallback if unidecode returns an empty string for nick
This is the case for e.g. nicks that are only an emoji.
This commit is contained in:
parent
11b65ee809
commit
a9f59307c9
@ -4,6 +4,7 @@ import threading
|
|||||||
import string
|
import string
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
import inspect
|
import inspect
|
||||||
|
import base64
|
||||||
|
|
||||||
from pylinkirc import utils, world, conf, structures
|
from pylinkirc import utils, world, conf, structures
|
||||||
from pylinkirc.log import log
|
from pylinkirc.log import log
|
||||||
@ -132,8 +133,16 @@ def normalize_nick(irc, netname, nick, times_tagged=0, uid=''):
|
|||||||
"""
|
"""
|
||||||
is_unicode_capable = irc.casemapping in ('utf8', 'utf-8', 'rfc7700')
|
is_unicode_capable = irc.casemapping in ('utf8', 'utf-8', 'rfc7700')
|
||||||
if USE_UNIDECODE and not is_unicode_capable:
|
if USE_UNIDECODE and not is_unicode_capable:
|
||||||
nick = unidecode.unidecode(nick)
|
decoded_nick = unidecode.unidecode(nick).strip()
|
||||||
netname = unidecode.unidecode(netname)
|
netname = unidecode.unidecode(netname).strip()
|
||||||
|
if decoded_nick:
|
||||||
|
nick = decoded_nick
|
||||||
|
else:
|
||||||
|
# XXX: The decoded version of the nick is empty, YUCK!
|
||||||
|
# Base64 the nick for now, since (interestingly) we don't enforce UIDs to always be
|
||||||
|
# ASCII strings.
|
||||||
|
nick = base64.b64encode(nick.encode(irc.encoding, 'replace'), altchars=b'-_')
|
||||||
|
nick = nick.decode()
|
||||||
|
|
||||||
# Normalize spaces to hyphens
|
# Normalize spaces to hyphens
|
||||||
nick = nick.replace(' ', FALLBACK_CHARACTER)
|
nick = nick.replace(' ', FALLBACK_CHARACTER)
|
||||||
|
Loading…
Reference in New Issue
Block a user