Source code for pykubegrader.tokens.tokens

import os

import requests
from requests.auth import HTTPBasicAuth

from ..utils import api_base_url


[docs] def build_token_payload(token: str, duration: int, **kwargs) -> dict: student_id = kwargs.get("student_id", None) assignment = kwargs.get("assignment", None) jhub_user = os.getenv("JUPYTERHUB_USER") if jhub_user is None: raise ValueError("JupyterHub user not found") payload = { "value": token, "duration": duration, "requester": jhub_user, } if student_id: payload["student_id"] = student_id if assignment: payload["assignment"] = assignment return payload
[docs] def add_token(token: str, duration: int = 20, **kwargs) -> None: """ Sends a POST request to mint a token """ if not api_base_url: raise ValueError("Environment variable for API URL not set") url = api_base_url.rstrip("/") + "/tokens" payload = build_token_payload(token=token, duration=duration, **kwargs) # Dummy credentials for HTTP Basic Auth auth = HTTPBasicAuth("user", "password") # Add a custom header, for potential use in authorization headers = {"x-jhub-user": payload["requester"]} response = requests.post(url=url, json=payload, headers=headers, auth=auth) # Print response print(f"Status code: {response.status_code}") try: print(f"Response: {response.json()}") except ValueError: print(f"Response: {response.text}")