Example #1
0
        public async Task RestCache()
        {
            var dataConfig = new DataConfig();

            dataConfig.ConnectionString = "mongodb://localhost:27017";
            dataConfig.DatabaseName     = "bworld";
            var database              = new MongoDatabase(Options.Create(dataConfig));
            var dataFactoryMongo      = new DataFactoryMongo(database, new MongoBlob(database), Options.Create(dataConfig));
            var businessFactory       = new BusinessModuleFactory(null);
            var resetSiteCacheCommand = new ResetSiteCacheCommand(dataFactoryMongo, new CacheProvider(dataFactoryMongo, businessFactory, new RouteProvider(dataFactoryMongo, businessFactory)));

            var domainDatas = new Dictionary <string, string>();

            domainDatas.Add("domain", "localhost");
            resetSiteCacheCommand.Input = new ResetSiteCacheInput()
            {
                Site = new CurrentRequest()
                {
                    SiteId      = "227aefdb-a2b9-4c27-98d9-2f0db43f99ca",
                    DomainDatas = domainDatas
                }
            };

            await resetSiteCacheCommand.ExecuteAsync();
        }
Example #2
0
        //
        // GET: /Home/

        public HomeController(BusinessFactory business, IRouteManager routeManager, ModuleManager moduleManager,
                              GetSeoCommand getSeoCommand, SeoService seoService, ResetSiteCacheCommand resetSiteCacheCommand,
                              IOptions <ApplicationConfig> options, ILogger <HomeController> logger)
            : base(business)
        {
            _routeManager          = routeManager;
            _moduleManager         = moduleManager;
            _seoService            = seoService;
            _resetSiteCacheCommand = resetSiteCacheCommand;
            _logger            = logger;
            _applicationConfig = options.Value;
            _getSeoCommand     = getSeoCommand;
        }
Example #3
0
        public async Task Test1()
        {
            try
            {
                var services        = new ServiceCollection();
                var serviceProvider = services.BuildServiceProvider();

                var dataConfig = new DataConfig();
                dataConfig.ConnectionString = "mongodb://localhost:27017";
                dataConfig.DatabaseName     = "bworld";
                var database         = new MongoDatabase(Options.Create(dataConfig));
                var dataFactoryMongo =
                    new DataFactoryMongo(database, new MongoBlob(database), Options.Create(dataConfig));
                var businessFactory = new BusinessModuleFactory(serviceProvider);
                var cacheProvider   = new CacheProvider(dataFactoryMongo, businessFactory,
                                                        new RouteProvider(dataFactoryMongo, businessFactory));


                var domainDatas = new Dictionary <string, string>();
                domainDatas.Add("domain", "localhost");
                var resetSiteCacheCommand = new ResetSiteCacheCommand(dataFactoryMongo, cacheProvider);
                resetSiteCacheCommand.Input = new ResetSiteCacheInput()
                {
                    Site = new CurrentRequest()
                    {
                        SiteId      = "c27e39ee-7ba9-46f8-aa7c-9e334c72a96c", //"227aefdb-a2b9-4c27-98d9-2f0db43f99ca",
                        DomainDatas = domainDatas
                    }
                };



                await cacheProvider.InitializeCacheAsync();

                //await resetSiteCacheCommand.ExecuteAsync();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            //await resetSiteCacheCommand.ExecuteAsync();
        }
        public async Task <ActionResult <BaseParameters> > Master([FromServices] ModuleManager moduleManager, [FromServices] ResetSiteCacheCommand resetSiteCacheCommand, [FromServices] IRouteManager routeManager, [FromServices] IOptions <ApplicationConfig> options, [FromQuery] string url, [FromQuery] string port = "")
        {
            var fullRequestUrl = HttpUtility.UrlDecode(url);
            var fullUrl        = fullRequestUrl.Split('?')[0];

            if (fullUrl.Contains(":"))
            {
                fullUrl = fullUrl.Replace($":{port}", "");
            }

            var parameters     = new BaseParameters();
            var simpleUrl      = fullUrl.Replace("https://", "").Replace("http://", "");
            var findRouteInput = new FindRouteInput();

            findRouteInput.Url      = simpleUrl;
            findRouteInput.FullUrl  = fullRequestUrl;
            findRouteInput.IsSecure = true;
            findRouteInput.Port     = Request.Host.Port.ToString();

            var findRouteResult = await routeManager.FindRouteAsync(findRouteInput);

            if (!findRouteResult.IsSuccess)
            {
                return(NotFound());
            }

            var currentRequest = new CurrentRequest();

            var siteId = findRouteResult.SiteId;

            currentRequest.SiteId      = siteId;
            currentRequest.DomainId    = findRouteResult.DomainId;
            currentRequest.DomainDatas = new Dictionary <string, string>();
            currentRequest.IsSecure    = true;
            currentRequest.Port        = findRouteInput.Port;
            if (findRouteResult.DomainDatas != null)
            {
                foreach (var domainData in findRouteResult.DomainDatas)
                {
                    currentRequest.DomainDatas.Add(domainData);
                }
            }

            dynamic master;

            try
            {
                master = await moduleManager.GetMasterAsync(currentRequest);
            }
            catch (Exception exception)
            {
                _logger.LogError(exception, "This catch should be remove");
                master =
                    await
                    Business.InvokeAsync <ResetSiteCacheCommand, ResetSiteCacheInput, CommandResult <dynamic> >(
                        resetSiteCacheCommand,
                        new ResetSiteCacheInput { Site = currentRequest });
            }

            var value     = options.Value;
            var baseUrlJs = value.MainDomainUrl;

            parameters.Master = JsonConvert.SerializeObject(master, new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });
            parameters.Version       = value.Version;
            parameters.MainDomainUrl = @UrlHelper.Concat(baseUrlJs);
            parameters.IsDebug       = value.IsDebug;
            parameters.BaseUrlJs     = baseUrlJs;
            parameters.Header        = HomeController.GetHeader(findRouteResult, master, Request, fullRequestUrl);
            parameters.BaseUrlSite   = parameters.Header.BaseUrlSite;
            return(parameters);
        }
Example #5
0
        public async Task <ActionResult <BaseParameters> > Master([FromServices] ModuleManager moduleManager, [FromServices] ResetSiteCacheCommand resetSiteCacheCommand, [FromServices] IRouteManager routeManager, [FromServices] IOptions <ApplicationConfig> options, [FromQuery] string url, [FromQuery] string port = "")
        {
            /*var requestedDomain = $"{Request.Scheme}://{Request.Host.Host}";
             *          string applicationPath = Request.PathBase;
             *          string requestedPath = path;
             *          var fullRequestUrl = @UrlHelper.Concat(requestedDomain, Request.PathBase, requestedPath);
             *
             *          var fullUrl = UrlHelper.Concat(requestedDomain, applicationPath, requestedPath);*/

            var fullRequestUrl = url;
            var fullUrl        = fullRequestUrl.Split('?')[0];

            if (fullUrl.Contains(":"))
            {
                fullUrl = fullUrl.Replace($":{port}", "");
            }



            var parameters     = new BaseParameters();
            var simpleUrl      = fullUrl.Replace("https://", "").Replace("http://", "");
            var findRouteInput = new FindRouteInput();

            findRouteInput.Url      = simpleUrl;
            findRouteInput.FullUrl  = fullRequestUrl;
            findRouteInput.IsSecure = true;
            findRouteInput.Port     = Request.Host.Port.ToString();

            var findRouteResult = await routeManager.FindRouteAsync(findRouteInput);

            if (!findRouteResult.IsSuccess)
            {
                return(NotFound());
            }

            var currentRequest = new CurrentRequest();

            var siteId = findRouteResult.SiteId;

            currentRequest.SiteId      = siteId;
            currentRequest.DomainId    = findRouteResult.DomainId;
            currentRequest.DomainDatas = new Dictionary <string, string>();
            currentRequest.IsSecure    = true;
            currentRequest.Port        = findRouteInput.Port;
            if (findRouteResult.DomainDatas != null)
            {
                foreach (var domainData in findRouteResult.DomainDatas)
                {
                    currentRequest.DomainDatas.Add(domainData);
                }
            }


            dynamic master;

            try
            {
                master = await moduleManager.GetMasterAsync(currentRequest);
            }
            catch (Exception exception)
            {
                _logger.LogError(exception, "This catch should be remove");
                master =
                    await
                    Business.InvokeAsync <ResetSiteCacheCommand, ResetSiteCacheInput, CommandResult <dynamic> >(
                        resetSiteCacheCommand,
                        new ResetSiteCacheInput { Site = currentRequest });
            }


            var value = options.Value;

            parameters.Master        = master;
            parameters.Version       = value.Version;
            parameters.MainDomainUrl = @UrlHelper.Concat(value.MainDomainUrl);
            parameters.IsDebug       = value.IsDebug;
            //var baseUrl = UriHelper.BuildAbsolute(Request.Scheme, Request.Host).TrimEnd('/');
            // parameters.BaseUrl = baseUrl;

            var baseUrlJs = "";

            baseUrlJs = value.MainDomainUrl;

            parameters.BaseUrlJs = baseUrlJs;


            // var masterJson = JsonConvert.SerializeObject(master);

            parameters.Header = HomeController.GetHeader(findRouteResult, master, Request, fullRequestUrl);

            parameters.BaseUrlSite = parameters.Header.BaseUrlSite;

            return(parameters);
        }