mirror of
https://github.com/ReVanced/revanced-api.git
synced 2026-01-20 09:53:56 +00:00
feat: better versioning engine
This commit is contained in:
committed by
Alexandre Teles (afterSt0rm)
parent
73252524f1
commit
8d36663610
40
api/utils/auth.py
Normal file
40
api/utils/auth.py
Normal file
@@ -0,0 +1,40 @@
|
||||
import os
|
||||
import secrets
|
||||
import string
|
||||
from data.database import Session
|
||||
|
||||
from sanic_beskar import Beskar
|
||||
|
||||
from data.models import UserDbModel
|
||||
|
||||
beskar = Beskar()
|
||||
|
||||
|
||||
def configure_auth(app):
|
||||
app.config.SECRET_KEY = os.environ.get("SECRET_KEY").join(
|
||||
secrets.choice(string.ascii_letters) for i in range(15)
|
||||
)
|
||||
app.config["TOKEN_ACCESS_LIFESPAN"] = {"hours": 24}
|
||||
app.config["TOKEN_REFRESH_LIFESPAN"] = {"days": 30}
|
||||
beskar.init_app(app, UserDbModel)
|
||||
|
||||
_init_default_user()
|
||||
|
||||
|
||||
def _init_default_user():
|
||||
username = os.environ.get("USERNAME")
|
||||
password = os.environ.get("PASSWORD")
|
||||
|
||||
if not username or not password:
|
||||
raise Exception("Missing USERNAME or PASSWORD environment variables")
|
||||
|
||||
session = Session()
|
||||
|
||||
existing_user = session.query(UserDbModel).filter_by(username=username).first()
|
||||
if not existing_user:
|
||||
session.add(
|
||||
UserDbModel(username=username, password=beskar.hash_password(password))
|
||||
)
|
||||
session.commit()
|
||||
|
||||
session.close()
|
||||
7
api/utils/limiter.py
Normal file
7
api/utils/limiter.py
Normal file
@@ -0,0 +1,7 @@
|
||||
from sanic_limiter import Limiter, get_remote_address
|
||||
|
||||
limiter = Limiter(key_func=get_remote_address)
|
||||
|
||||
|
||||
def configure_limiter(app):
|
||||
limiter.init_app(app)
|
||||
8
api/utils/versioning.py
Normal file
8
api/utils/versioning.py
Normal file
@@ -0,0 +1,8 @@
|
||||
from cytoolz import keyfilter
|
||||
from config import api_versions
|
||||
|
||||
|
||||
def get_version(value: str) -> str:
|
||||
result = keyfilter(lambda key: value in api_versions[key], api_versions)
|
||||
|
||||
return list(result.keys())[0] if result else "v0"
|
||||
Reference in New Issue
Block a user