akarpov/redirect/util.py

19 lines
523 B
Python
Raw Normal View History

import string
from redirect.settings import settings
URL_CHARACTERS = list(string.ascii_letters + string.digits + ";,:@&-_.!~*'()#")
SLUG_CUTOFF = settings.redirect_slug_cutoff
def slug_to_link_id(slug: str) -> int:
"""Converts given slug to an id of a link."""
link_id = 0
try:
for i, ch in enumerate(slug[:SLUG_CUTOFF - 1:-1]): # fmt: skip
value = URL_CHARACTERS.index(ch)
link_id += value * len(URL_CHARACTERS) ** i
except ValueError:
pass
return link_id