code: def init_app(self, app, storage=None, cache=None, file_upload=None):
          
  
          self.app = app
          self.config = self.app.config
          self.storage = storage or self.storage
          self.file_upload = file_upload or self.file_upload
          self.cache = cache or self.cache
          self._register_plugins(self.app, self.config)
  
          from .views import create_blueprint
          blog_app = create_blueprint(__name__, self)
          # external urls
          blueprint_created.send(self.app, engine=self, blueprint=blog_app)
          self.app.register_blueprint(
              blog_app, url_prefix=self.config.get("BLOGGING_URL_PREFIX"))
  
          self.app.extensions["FLASK_BLOGGING_ENGINE"] = self  # duplicate
          self.app.extensions["blogging"] = self
          self.principal = Principal(self.app)
          engine_initialised.send(self.app, engine=self)
  
          if self.config.get("BLOGGING_ALLOW_FILEUPLOAD", True):
              self.ffu = self.file_upload or FlaskFileUpload(app)
docs: Initialize the engine.
  
          :param app: The app to use
          :type app: Object
          :param storage: The blog storage instance that implements the
          :type storage: Object
          :param cache: (Optional) A Flask-Cache object to enable caching
          :type cache: Object
           ``Storage`` class interface.