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')}
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)
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()
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'))
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()
def get(self, request, *args, **kwargs): return JSONResponse({ 'version': configuration.get_version(), 'type': configuration.get_type(), 'media_url_template': configuration.media_url('{}', request) })