41 lines
1.0 KiB
Python
41 lines
1.0 KiB
Python
# coding=UTF-8
|
|
import json
|
|
from flask import request, current_app, Response
|
|
import unidecode
|
|
import re
|
|
|
|
def check_api_key():
|
|
api_keys = current_app.config.get("API_KEYS")
|
|
if not api_keys:
|
|
return
|
|
auth = request.authorization
|
|
if not auth or not auth.username in api_keys:
|
|
response = json.dumps({'status': 401, 'message': 'No valid API key provided'})
|
|
return Response(
|
|
response, 401,
|
|
{'WWW-Authenticate': 'Basic realm="Login Required"'}
|
|
)
|
|
|
|
|
|
def slugify(text):
|
|
"""Converts a string to a human-readable url"""
|
|
|
|
# translate
|
|
text = unidecode.unidecode(text)
|
|
|
|
# lowercase
|
|
text = text.lower()
|
|
|
|
# replace unwanted chars
|
|
numbers = re.compile('(?<=\d),(?=\d)')
|
|
text = numbers.sub('', text)
|
|
unwanted_chars = re.compile(r'[^_a-z0-9/]+')
|
|
text = unwanted_chars.sub('_', text)
|
|
|
|
# remove redundant _
|
|
duplicated_underscores = re.compile('_{2,}')
|
|
text = duplicated_underscores.sub('_', text)
|
|
text = text.strip('_')
|
|
|
|
return text
|