Lowercase usernames before adding them to the database

This commit is contained in:
Lonami Exo 2017-12-27 11:54:08 +01:00
parent aef96f1b68
commit 86429e7291
2 changed files with 12 additions and 10 deletions

View File

@ -330,7 +330,7 @@ class Session:
p_hash = p.access_hash p_hash = p.access_hash
if p_hash is not None: if p_hash is not None:
username = getattr(e, 'username', None) username = getattr(e, 'username', '').lower() or None
phone = getattr(e, 'phone', None) phone = getattr(e, 'phone', None)
name = utils.get_display_name(e) or None name = utils.get_display_name(e) or None
rows.append((marked_id, p_hash, username, phone, name)) rows.append((marked_id, p_hash, username, phone, name))
@ -357,6 +357,11 @@ class Session:
Raises ValueError if it cannot be found. Raises ValueError if it cannot be found.
""" """
c = self._conn.cursor() c = self._conn.cursor()
if isinstance(key, TLObject):
if type(key).SUBCLASS_OF_ID == 0xc91c90b6: # crc32(b'InputPeer')
return key
key = utils.get_peer_id(key, add_mark=True)
if isinstance(key, str): if isinstance(key, str):
phone = utils.parse_phone(key) phone = utils.parse_phone(key)
if phone: if phone:
@ -367,12 +372,6 @@ class Session:
c.execute('select id, hash from entities where username=?', c.execute('select id, hash from entities where username=?',
(username,)) (username,))
if isinstance(key, TLObject):
# crc32(b'InputPeer') and crc32(b'Peer')
if type(key).SUBCLASS_OF_ID == 0xc91c90b6:
return key
key = utils.get_peer_id(key, add_mark=True)
if isinstance(key, int): if isinstance(key, int):
c.execute('select id, hash from entities where id=?', (key,)) c.execute('select id, hash from entities where id=?', (key,))

View File

@ -325,14 +325,17 @@ def parse_phone(phone):
def parse_username(username): def parse_username(username):
"""Parses the given username or channel access hash, given """Parses the given username or channel access hash, given
a string, username or URL. Returns a tuple consisting of a string, username or URL. Returns a tuple consisting of
both the stripped username and whether it is a joinchat/ hash. both the stripped, lowercase username and whether it is
a joinchat/ hash (in which case is not lowercase'd).
""" """
username = username.strip() username = username.strip()
m = USERNAME_RE.match(username) m = USERNAME_RE.match(username)
if m: if m:
return username[m.end():], bool(m.group(1)) result = username[m.end():]
is_invite = bool(m.group(1))
return result if is_invite else result.lower(), is_invite
else: else:
return username, False return username.lower(), False
def get_peer_id(peer, add_mark=False): def get_peer_id(peer, add_mark=False):