Skip to content
Snippets Groups Projects
Commit c94e96ab authored by Steffen Vogel's avatar Steffen Vogel :santa_tone2:
Browse files

add new helpers for creating sharable links

parent 29840f3a
No related branches found
No related tags found
No related merge requests found
Pipeline #386169 failed
import os
import requests
import urllib
base_url = 'https://jupyter.rwth-aachen.de'
hub_api_url = f'{base_url}/hub/api'
shareable_prefix = 'shareable'
def get_hub_token(user, note=None, expires_in=None):
token = os.environ['JUPYTERHUB_API_TOKEN']
body = {}
if expires_in:
body['expires_in'] = expires_in
if note:
body['note'] = note
r = requests.post(f'{hub_api_url}/users/{user}/tokens?', headers={
'Authorization': 'Bearer ' + token
}, json=body)
r.raise_for_status()
return r.json()['token']
def get_shareable_url(user=None, path=None, expires_in=24*60*60, note=''):
if user is None:
user = os.environ['JUPYTERHUB_USER']
token = get_hub_token(user, note=f'{shareable_prefix}:{path}:{note}', expires_in=expires_in)
path = urllib.parse.quote(path)
return f'{base_url}/user/{user}/lab/tree/{path}?token={token}'
def get_shareable_tokens(user=None):
if user is None:
user = os.environ['JUPYTERHUB_USER']
token = os.environ['JUPYTERHUB_API_TOKEN']
r = requests.get(f'{hub_api_url}/users/{user}/tokens?', headers={
'Authorization': 'Bearer ' + token
})
r.raise_for_status()
tokens = []
for token in r.json()['api_tokens']:
if token['note'].startswith(shareable_prefix + ':'):
tokens.append(token)
return tokens
def revoke_shareable_token(token_id, user=None):
if user is None:
user = os.environ['JUPYTERHUB_USER']
token = os.environ['JUPYTERHUB_API_TOKEN']
r = requests.delete(f'{hub_api_url}/users/{user}/tokens/{token_id}', headers={
'Authorization': 'Bearer ' + token
})
r.raise_for_status()
import rwth_nb.misc.notebook as nb
import rwth_nb.misc.share as share
from pprint import pprint
url = share.get_shareable_url(path='gdet3/GDET3 Äquivalenter Tiefpass.ipynb',
note='access for my colleage at IKS',
expires_in=24*60*60)
print(url)
# List all shareable tokens
tokens = share.get_shareable_tokens()
pprint(tokens)
# Revoke the new token
share.revoke_shareable_token(tokens[0]['id'])
# List all tokens again
tokens = share.get_shareable_tokens()
pprint(tokens)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment