예제 #1
0
def project_auth(token, permission=None):
    if not settings.TOKEN:
        return {'result': False}

    url = api_method_url('project_auth/')
    data = {'project_token': settings.TOKEN, 'token': token}
    headers = {
        'User-Agent':
        '{} v{}'.format(configuration.get_type(), configuration.get_version())
    }

    if permission:
        data.update(permission)

    r = requests.request('POST', url, data=data, headers=headers)
    success = 200 <= r.status_code < 300

    if not success:
        logger.error('Project Auth request error', r.status_code, r.reason)
        return {'result': False}

    result = r.json()

    if result.get('access_disabled'):
        return {'result': False, 'warning': result.get('warning')}

    return {'result': True, 'warning': result.get('warning')}
예제 #2
0
파일: api.py 프로젝트: sunxun-1/jet-bridge
    def error_response(self, exc_type, exc, traceback):
        if isinstance(exc, PermissionDenied):
            return TemplateResponse('403.html', status=403, data={
                'path': self.request.path,
            })
        elif isinstance(exc, NotFound):
            return TemplateResponse('404.html', status=404, data={
                'path': self.request.path,
            })
        elif isinstance(exc, ValidationError):
            response = serialize_validation_error(exc)
            return JSONResponse(response, status=exc.status_code)
        elif isinstance(exc, APIException):
            return JSONResponse({
                'error': exc.detail,
                'error_code': exc.code
            }, status=exc.status_code)
        else:
            if settings.DEBUG:
                ctx = {
                    'path': self.request.path if self.request else None,
                    'full_path': self.request.protocol + '://' + self.request.host + self.request.path if self.request else None,
                    'method': self.request.method if self.request else None,
                    'type': configuration.get_type(),
                    'version': configuration.get_version(),
                    'current_datetime': datetime.now().strftime('%c'),
                    'python_version': platform.python_version(),
                    'python_executable': sys.executable,
                    'python_path': sys.path
                }

                if exc:
                    ctx.update({
                        'exception_type': exc_type.__name__,
                        'exception_value': six.text_type(exc)
                    })

                if traceback:
                    last_traceback = traceback

                    while last_traceback.tb_next:
                        last_traceback = last_traceback.tb_next

                    frame = last_traceback.tb_frame
                    func_name = frame.f_code.co_name
                    file_name = frame.f_code.co_filename
                    line_number = frame.f_lineno

                    ctx.update({
                        'exception_last_traceback_line': line_number,
                        'exception_last_traceback_func': func_name,
                        'exception_last_traceback_file': file_name,
                    })

                logger.exception(exc)

                return TemplateResponse('500.debug.html', status=500, data=ctx)
            else:
                return TemplateResponse('500.html', status=500)
예제 #3
0
파일: backend.py 프로젝트: bubanoid/stem
def get_resource_secret_tokens(project, resource, token):
    if not token:
        return []

    url = api_method_url('projects/{}/resources/{}/secret_tokens/'.format(project, resource))
    headers = {
        'Authorization': 'ProjectToken {}'.format(token),
        'User-Agent': '{} v{}'.format(configuration.get_type(), configuration.get_version())
    }

    r = requests.request('GET', url, headers=headers)
    success = 200 <= r.status_code < 300

    if not success:
        return []

    return r.json()
예제 #4
0
파일: backend.py 프로젝트: bubanoid/stem
def is_token_activated(project_token):
    if not project_token:
        return False

    url = api_method_url('project_tokens/{}/'.format(project_token))
    headers = {
        'User-Agent': '{} v{}'.format(configuration.get_type(), configuration.get_version())
    }

    r = requests.request('GET', url, headers=headers)
    success = 200 <= r.status_code < 300

    if not success:
        return False

    result = r.json()

    return bool(result.get('activated'))
예제 #5
0
def is_resource_token_activated(project_name, resource_token):
    if not project_name or not resource_token:
        return False

    url = api_method_url('check_resource_token/')
    headers = {
        'User-Agent': '{} v{}'.format(configuration.get_type(), configuration.get_version())
    }
    data = {
        'project': project_name,
        'token': resource_token
    }

    r = requests.request('POST', url, headers=headers, data=data)

    if 200 <= r.status_code < 300:
        result = r.json()
        return bool(result.get('activated'))
    elif 400 <= r.status_code < 500:
        return False
    else:
        raise RequestException()
예제 #6
0
 def get(self, request, *args, **kwargs):
     return JSONResponse({
         'version': configuration.get_version(),
         'type': configuration.get_type(),
         'media_url_template': configuration.media_url('{}', request)
     })