30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
from fastapi import APIRouter, HTTPException
|
|
import os
|
|
import requests
|
|
from base64 import b64decode
|
|
|
|
router = APIRouter()
|
|
|
|
def get_basic_auth_header(token: str) -> dict:
|
|
"""Decode the base64 token and return the appropriate header."""
|
|
decoded_token = b64decode(token).decode('utf-8')
|
|
return {"Authorization": f"Basic {token}"}
|
|
|
|
@router.get("/data/{id}")
|
|
async def fetch_arbor_data(id: int, token: str):
|
|
url_mapping = {
|
|
1: os.environ["KS3_COURSE_CLASS_MEMBERSHIP_URL"],
|
|
2: os.environ["TEACHING_GROUP_MEMBERSHIPS_2023_2024_URL"],
|
|
3: os.environ["SCHEDULED_TIMETABLE_SLOTS_URL"],
|
|
4: os.environ["BEHAVIOURAL_INCIDENTS_REPORTING_URL"],
|
|
5: os.environ["Y7_LESSON_TIMETABLE_URL"]
|
|
}
|
|
if id not in url_mapping:
|
|
raise HTTPException(status_code=404, detail="Data ID not supported")
|
|
|
|
headers = get_basic_auth_header(token)
|
|
response = requests.get(url_mapping[id], headers=headers)
|
|
if response.status_code != 200:
|
|
raise HTTPException(status_code=response.status_code, detail="Failed to fetch data from Arbor")
|
|
return response.json()
|