You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ORPA-pyOpenRPA/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/jupyterlab_server/listings_handler.py

83 lines
2.7 KiB

"""Tornado handlers for dynamic listings loading."""
# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.
import os
import time
import json
import re
import tornado
from .server import APIHandler
from traitlets import Instance
import requests
LISTINGS_URL_SUFFIX='@jupyterlab/extensionmanager-extension/listings.json'
def fetch_listings(logger):
if not logger:
from traitlets import log
logger = log.get_logger()
if len(ListingsHandler.blacklist_uris) > 0:
blacklist = []
for blacklist_uri in ListingsHandler.blacklist_uris:
logger.info('Fetching blacklist from {}'.format(ListingsHandler.blacklist_uris))
r = requests.request('GET', blacklist_uri, **ListingsHandler.listings_request_opts)
j = json.loads(r.text)
for b in j['blacklist']:
blacklist.append(b)
ListingsHandler.blacklist = blacklist
if len(ListingsHandler.whitelist_uris) > 0:
whitelist = []
for whitelist_uri in ListingsHandler.whitelist_uris:
logger.info('Fetching whitelist from {}'.format(ListingsHandler.whitelist_uris))
r = requests.request('GET', whitelist_uri, **ListingsHandler.listings_request_opts)
j = json.loads(r.text)
for w in j['whitelist']:
whitelist.append(w)
ListingsHandler.whitelist = whitelist
ListingsHandler.listings = json.dumps({
'blacklist_uris': list(ListingsHandler.blacklist_uris),
'whitelist_uris': list(ListingsHandler.whitelist_uris),
'blacklist': ListingsHandler.blacklist,
'whitelist': ListingsHandler.whitelist,
})
class ListingsHandler(APIHandler):
"""An handler that returns the listings specs."""
"""Below fields are class level fields that are accessed and populated
by the initialization and the fetch_listings methods.
Some fields are initialized before the handler creation in the
handlers.py#add_handlers method.
Having those fields predefined reduces the guards in the methods using
them.
"""
# The list of blacklist URIS.
blacklist_uris = set()
# The list of whitelist URIS.
whitelist_uris = set()
# The blacklisted extensions.
blacklist = []
# The whitelisted extensions.
whitelist = []
# The provider request options to be used for the request library.
listings_request_opts = {}
# The PeriodicCallback that schedule the call to fetch_listings method.
pc = None
def get(self, path):
self.set_header('Content-Type', 'application/json')
if path == LISTINGS_URL_SUFFIX:
self.write(ListingsHandler.listings)
else:
raise tornado.web.HTTPError(400)