mirror of
https://github.com/NovaOSS/nova-api.git
synced 2024-11-25 20:43:56 +01:00
49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
|
"""User management."""
|
||
|
|
||
|
import os
|
||
|
import json
|
||
|
import fastapi
|
||
|
|
||
|
import users
|
||
|
|
||
|
from dotenv import load_dotenv
|
||
|
|
||
|
load_dotenv()
|
||
|
router = fastapi.APIRouter(tags=['core'])
|
||
|
|
||
|
async def check_core_auth(request):
|
||
|
received_auth = request.headers.get('Authorization')
|
||
|
|
||
|
if received_auth != os.getenv('CORE_API_KEY'):
|
||
|
return fastapi.Response(status_code=403, content='Invalid or no API key given.')
|
||
|
|
||
|
@router.get('/users')
|
||
|
async def get_users(discord_id: int, incoming_request: fastapi.Request):
|
||
|
auth_error = await check_core_auth(incoming_request)
|
||
|
|
||
|
if auth_error:
|
||
|
return auth_error
|
||
|
|
||
|
user = await users.get_user(by_discord_id=discord_id)
|
||
|
|
||
|
if not user:
|
||
|
return fastapi.Response(status_code=404, content='User not found.')
|
||
|
return user
|
||
|
|
||
|
@router.post('/users')
|
||
|
async def create_user(incoming_request: fastapi.Request):
|
||
|
auth_error = await check_core_auth(incoming_request)
|
||
|
|
||
|
if auth_error:
|
||
|
return auth_error
|
||
|
|
||
|
try:
|
||
|
payload = await incoming_request.json()
|
||
|
discord_id = payload.get('discord_id')
|
||
|
except (json.decoder.JSONDecodeError, AttributeError):
|
||
|
return fastapi.Response(status_code=400, content='Invalid or no payload received.')
|
||
|
|
||
|
user = await users.add_user(discord_id=discord_id)
|
||
|
|
||
|
return user
|