views.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:external_items 作者: natfoster82 项目源码 文件源码
def lab(token):
    try:
        lab_id, instance_id, exam_id, response_id = external_serializer.loads(token, max_age=60)
    except (BadSignature, SignatureExpired):
        abort(403)

    url_base = '{0}/labapiConnection/ShowLab?labInstanceGuid={1}&fullScreen=False'
    okay_states = {'STARTING', 'ACTIVE'}
    if instance_id:
        lab_instance_url = '{0}/labapi/v1/instance?id={1}'.format(current_app.config['XTREME_URL'],
                                                                  instance_id)
        resp = requests.get(lab_instance_url, auth=HTTPBasicAuth(username=current_app.config['XTREME_ID'],
                                                                 password=current_app.config['XTREME_SECRET']))
        if resp.status_code != 200 or resp.json()['state'] not in okay_states:
            abort(400)
        url = resp.json()['connectionUrl'] or url_base.format(current_app.config['XTREME_URL'], instance_id)
    else:
        payload = {
            'labID': lab_id
        }
        lab_url = '{0}/labapi/v1/Create'.format(current_app.config['XTREME_URL'])
        resp = requests.put(lab_url, json=payload, auth=HTTPBasicAuth(username=current_app.config['XTREME_ID'],
                                                                      password=current_app.config['XTREME_SECRET']))
        if resp.status_code != 200:
            abort(400)
        instance_id = resp.json()['id']
        redis_store.setex(response_id, 3600, instance_id)
        url = url_base.format(current_app.config['XTREME_URL'], instance_id)
    return render_template('xtreme.html', url=url, response_id=response_id, instance_id=instance_id, exam_id=exam_id)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号