docs: def download_file(filename, object_name=None, content=None, as_attachment=True, timeout=60):
      """
      Alias to download a file object as attachment, or convert some text as . 
      :param filename: the filename with extension.
          If the file to download is an StorageOject, filename doesn't need to have an extension. 
              It will automatically put it
          If the file to download is a `content` text, extension is required.
      :param object_name: the file storage object name
      :param content: string/bytes of text
      :param as_attachment: to download as attachment
      :param timeout: the timeout to download file from the cloud
      :return: 
      """
      if object_name:
          file = get_file(object_name)
          if not isinstance(file, (flask_cloudy.Object, mocha_db.StorageObject)):
              raise TypeError("Can't download file. It must be of StorageObject type")
          return file.download_url(timeout=timeout, name=filename)
      elif content:
          buff = six.BytesIO()
          buff.write(content)
          buff.seek(0)
          return send_file(buff,
                           attachment_filename=filename,
                           as_attachment=as_attachment)
      raise TypeError("`file` object or `content` text must be provided")