| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | from flask import Response, requestfrom flask_restful import Resourcefrom werkzeug.exceptions import NotFoundimport servicesfrom controllers.files import apifrom libs.exception import BaseHTTPExceptionfrom services.account_service import TenantServicefrom services.file_service import FileServiceclass ImagePreviewApi(Resource):    def get(self, file_id):        file_id = str(file_id)        timestamp = request.args.get('timestamp')        nonce = request.args.get('nonce')        sign = request.args.get('sign')        if not timestamp or not nonce or not sign:            return {'content': 'Invalid request.'}, 400        try:            generator, mimetype = FileService.get_image_preview(                file_id,                timestamp,                nonce,                sign            )        except services.errors.file.UnsupportedFileTypeError:            raise UnsupportedFileTypeError()        return Response(generator, mimetype=mimetype)    class WorkspaceWebappLogoApi(Resource):    def get(self, workspace_id):        workspace_id = str(workspace_id)        custom_config = TenantService.get_custom_config(workspace_id)        webapp_logo_file_id = custom_config.get('replace_webapp_logo') if custom_config is not None else None        if not webapp_logo_file_id:            raise NotFound('webapp logo is not found')        try:            generator, mimetype = FileService.get_public_image_preview(                webapp_logo_file_id,            )        except services.errors.file.UnsupportedFileTypeError:            raise UnsupportedFileTypeError()        return Response(generator, mimetype=mimetype)api.add_resource(ImagePreviewApi, '/files/<uuid:file_id>/image-preview')api.add_resource(WorkspaceWebappLogoApi, '/files/workspaces/<uuid:workspace_id>/webapp-logo')class UnsupportedFileTypeError(BaseHTTPException):    error_code = 'unsupported_file_type'    description = "File type not allowed."    code = 415
 |