Example #1
0
        /// <summary>
        ///     Initializes any default plugin if no other plugin is registered to same interface
        ///     <para />
        ///     Also used for changing the default security settings
        ///     <para />
        ///     Should be called after you have registered all your non-default plugins
        /// </summary>
        public void InitializeDefaultPlugins(bool renderCaching = true, bool securityOn = false,
                                             SimpleHttpSecuritySettings securitySettings = null)
        {
            if (_defPluginsReady)
            {
                return;
            }

            if (!_rPluginCollection.IsRegistered <IJsonConverter>())
            {
                RegisterPlugin <IJsonConverter, ServiceStackJsonConverter>(new ServiceStackJsonConverter());
            }

            if (!_rPluginCollection.IsRegistered <IXmlConverter>())
            {
                RegisterPlugin <IXmlConverter, ServiceStackXmlConverter>(new ServiceStackXmlConverter());
            }

            if (!_rPluginCollection.IsRegistered <IHttpSecurityHandler>())
            {
                RegisterPlugin <IHttpSecurityHandler, SimpleServerProtection>(new SimpleServerProtection());
            }

            if (!_rPluginCollection.IsRegistered <IBodyParser>())
            {
                RegisterPlugin <IBodyParser, SimpleBodyParser>(new SimpleBodyParser());
            }

            if (!_rPluginCollection.IsRegistered <IFileCacheManager>())
            {
                RegisterPlugin <IFileCacheManager, SimpleFileCacheManager>(new SimpleFileCacheManager());
            }

            if (!_rPluginCollection.IsRegistered <IPageRenderer>())
            {
                RegisterPlugin <IPageRenderer, EcsPageRenderer>(new EcsPageRenderer());
            }

            _defPluginsReady = true;

            if (securitySettings == null)
            {
                securitySettings = new SimpleHttpSecuritySettings();
            }
            SecMan          = _rPluginCollection.Use <IHttpSecurityHandler>();
            SecMan.Settings = securitySettings;
            _rPluginCollection.Use <IPageRenderer>().CachePages = renderCaching;
            _cacheMan = _rPluginCollection.Use <IFileCacheManager>();
            if (CachePublicFiles && _publicFiles)
            {
                _resHandler = new CachePublicFileRequestHander(PublicDir, _cacheMan);
            }
            else if (_publicFiles)
            {
                _resHandler = new PublicFileRequestHander(PublicDir);
            }
            else
            {
                _resHandler = new ActionOnlyResponseHandler();
            }
            SecurityOn = securityOn;
        }