image_preview.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from flask import request, Response
  2. from flask_restful import Resource
  3. import services
  4. from controllers.files import api
  5. from libs.exception import BaseHTTPException
  6. from services.file_service import FileService
  7. class ImagePreviewApi(Resource):
  8. def get(self, file_id):
  9. file_id = str(file_id)
  10. timestamp = request.args.get('timestamp')
  11. nonce = request.args.get('nonce')
  12. sign = request.args.get('sign')
  13. if not timestamp or not nonce or not sign:
  14. return {'content': 'Invalid request.'}, 400
  15. try:
  16. generator, mimetype = FileService.get_image_preview(
  17. file_id,
  18. timestamp,
  19. nonce,
  20. sign
  21. )
  22. except services.errors.file.UnsupportedFileTypeError:
  23. raise UnsupportedFileTypeError()
  24. return Response(generator, mimetype=mimetype)
  25. api.add_resource(ImagePreviewApi, '/files/<uuid:file_id>/image-preview')
  26. class UnsupportedFileTypeError(BaseHTTPException):
  27. error_code = 'unsupported_file_type'
  28. description = "File type not allowed."
  29. code = 415