def save_file(file_name, content, directory=ATTACHMENT_DIRECTORY): info('save_file: file_name %s', file_name) mode = 0o777 os.makedirs(UPLOAD_DIRECTORY, mode, True) os.makedirs(UPLOAD_DIRECTORY + '/' + directory, mode, True) file_path = os.path.join(UPLOAD_DIRECTORY + '/' + directory, file_name) with open(file_path, "w") as file: file.write(str(content)) return file_path
def download(self, path: str): check_resource_extension(path) path = UPLOAD_ABS_DIRECTORY + path info('server.download: path %s', path) if not os.path.isfile(path): raise StorageBadRequest('resource does not exist for path ' + path, STORAGE_0119) attachment_file_name = extract_resource_name(path) return send_file(path, None, True, attachment_file_name)
def get_health(): returned_server_time = convert_date_to_string(now()) query = '''select now() as current_time from dual''' returned_database_time = first(text(query))['current_time'] info("server_time: %s; database_time: %s", returned_server_time, returned_database_time) processed = int(round(time.time() * 1000)) - g.requested_ms json = empty_json_object() json['processed_time_ms'] = processed json['returned_server_time'] = returned_server_time json['returned_database_time'] = returned_database_time return make_json_response(json, 200)
def create_directories(path: str): info('server.create_directories: path %s', path) path_parts = split_path(path) resource_name = extract_resource_name(path) info('server.create_directories: resource_name %s', resource_name) os.makedirs(UPLOAD_ABS_DIRECTORY, DEFAULT_FILE_PERMISSIONS, True) directory_path = '' for path_part in path_parts: if resource_name not in path_part and '/' not in path_part: directory_path += '/' + path_part absolute_path = UPLOAD_ABS_DIRECTORY + directory_path os.makedirs(absolute_path, DEFAULT_FILE_PERMISSIONS, True) return directory_path
def verify_auth_token(token, ip='0.0.0.0', path='/', grant='get_all', raise_error=True): token_checked = ("token_checked" in g and g.token_checked) if token_checked: return True if '127.0.0.1' in ip or '0.0.0.0' in ip: info('Permission granted. System request.') g.token_checked = True return True try: payload = decode_token(token) if "login" in payload: g.login = payload['login'] if "id" in payload: g.user_id = payload['id'] if "role" in payload: g.user_role = payload['role'] except Exception as e: exception(e) if raise_error: raise e else: return False permission = check_grants(payload['role'], path, grant) if permission is None: error('Permission denied. No rights for ' + path) if raise_error: raise Unauthorized('Permission denied. No rights for ' + path) else: return False g.token_checked = True return True
def upload(self, path: str, data): check_resource_extension(path) info('server.upload: path %s', path) self.create_directories(path) data.save(UPLOAD_ABS_DIRECTORY + path) return success(path, 200, 'Success', REST_GUIDE + 'resources')