コード例 #1
0
        /// <summary>
        /// Processes the HTTP request for controllers.
        /// </summary>
        /// <param name="containerProvider">The DI container provider.</param>
        /// <param name="context">The context.</param>
        /// <returns></returns>
        public Task ProcessRequest(IDIContainerProvider containerProvider, IOwinContext context)
        {
            var result = _controllersProcessor.ProcessControllers(containerProvider, context);

            switch (result)
            {
            case ControllersProcessorResult.Ok:
                return(_pageProcessor.ProcessPage(containerProvider, context));

            case ControllersProcessorResult.Http401:
                context.Response.StatusCode = 401;
                _redirector.SetLoginReturnUrlFromCurrentUri();
                break;

            case ControllersProcessorResult.Http403:
                context.Response.StatusCode = 403;
                break;

            case ControllersProcessorResult.Http404:
                context.Response.StatusCode = 404;
                break;
            }

            return(Task.Delay(0));
        }
コード例 #2
0
        /// <summary>
        /// Sets the context variables to data collector
        /// </summary>
        /// <param name="containerProvider">The DI container provider.</param>
        public void SetVariables(IDIContainerProvider containerProvider)
        {
            var environment       = containerProvider.Resolve <IEnvironment>();
            var languageManager   = containerProvider.Resolve <ILanguageManagerProvider>().Get();
            var context           = containerProvider.Resolve <IWebContextProvider>().Get();
            var stopWatchProvider = containerProvider.Resolve <IStopwatchProvider>();

            _dataCollector.Add(VariableNameTemplatesPath, environment.TemplatesPath);
            _dataCollector.Add(VariableNameSiteStyle, environment.SiteStyle);

            if (!string.IsNullOrEmpty(languageManager.Language))
            {
                _dataCollector.Add(VariableNameCurrentLanguage, languageManager.Language);
                _dataCollector.Add(VariableNameCurrentLanguageExtension, "." + languageManager.Language);
                _dataCollector.Add(VariableNameCurrentLanguageCultureName, Thread.CurrentThread.CurrentCulture.TextInfo.CultureName);
                _dataCollector.Add(VariableNameCurrentLanguageCultureNameExtension, "." + Thread.CurrentThread.CurrentCulture.TextInfo.CultureName);
            }
            else
            {
                _dataCollector.Add(VariableNameCurrentLanguage, (string)null);
                _dataCollector.Add(VariableNameCurrentLanguageExtension, (string)null);
                _dataCollector.Add(VariableNameCurrentLanguageCultureName, (string)null);
                _dataCollector.Add(VariableNameCurrentLanguageCultureNameExtension, (string)null);
            }

            _dataCollector.Add(VariableNameSiteUrl, context.SiteUrl);
            _dataCollector.Add(VariableNameSiteVirtualPath, context.VirtualPath);

            if (!_disableAutomaticSiteTitleSet)
            {
                SetSiteTitleFromStringTable(context.Request.Path.Value, containerProvider.Resolve <IStringTable>());
            }

            _dataCollector.Add(VariableNameExecutionTime, stopWatchProvider.StopAndGetMeasurement().ToString("mm\\:ss\\:fff"));
        }
コード例 #3
0
		/// <summary>
		/// Processes the HTTP request for controllers.
		/// </summary>
		/// <param name="containerProvider">The DI container provider.</param>
		/// <param name="context">The context.</param>
		/// <returns></returns>
		public Task ProcessRequest(IDIContainerProvider containerProvider, IOwinContext context)
		{
			var result = _controllersProcessor.ProcessControllers(containerProvider, context);

			switch (result)
			{
				case ControllersProcessorResult.Ok:
					return _pageProcessor.ProcessPage(containerProvider, context);

				case ControllersProcessorResult.Http401:
					context.Response.StatusCode = 401;
					_redirector.SetLoginReturnUrlFromCurrentUri();
					break;

				case ControllersProcessorResult.Http403:
					context.Response.StatusCode = 403;
					break;

				case ControllersProcessorResult.Http404:
					context.Response.StatusCode = 404;
					break;
			}

			return Task.Delay(0);
		}
コード例 #4
0
		/// <summary>
		/// Sets the context variables to data collector
		/// </summary>
		/// <param name="containerProvider">The DI container provider.</param>
		public void SetVariables(IDIContainerProvider containerProvider)
		{
			var environment = containerProvider.Resolve<IEnvironment>();
			var languageManager = containerProvider.Resolve<ILanguageManagerProvider>().Get();
			var context = containerProvider.Resolve<IWebContextProvider>().Get();
			var stopWatchProvider = containerProvider.Resolve<IStopwatchProvider>();

			_dataCollector.Add(VariableNameTemplatesPath, environment.TemplatesPath);
			_dataCollector.Add(VariableNameSiteStyle, environment.SiteStyle);

			if (!string.IsNullOrEmpty(languageManager.Language))
			{
				_dataCollector.Add(VariableNameCurrentLanguage, languageManager.Language);
				_dataCollector.Add(VariableNameCurrentLanguageExtension, "." + languageManager.Language);
				_dataCollector.Add(VariableNameCurrentLanguageCultureName, Thread.CurrentThread.CurrentCulture.TextInfo.CultureName);
				_dataCollector.Add(VariableNameCurrentLanguageCultureNameExtension, "." + Thread.CurrentThread.CurrentCulture.TextInfo.CultureName);
			}
			else
			{
				_dataCollector.Add(VariableNameCurrentLanguage, (string)null);
				_dataCollector.Add(VariableNameCurrentLanguageExtension, (string)null);
				_dataCollector.Add(VariableNameCurrentLanguageCultureName, (string)null);
				_dataCollector.Add(VariableNameCurrentLanguageCultureNameExtension, (string)null);
			}

			_dataCollector.Add(VariableNameSiteUrl, context.SiteUrl);
			_dataCollector.Add(VariableNameSiteVirtualPath, context.VirtualPath);

			if (!_disableAutomaticSiteTitleSet)
				SetSiteTitleFromStringTable(context.Request.Path.Value, containerProvider.Resolve<IStringTable>());

			_dataCollector.Add(VariableNameExecutionTime, stopWatchProvider.StopAndGetMeasurement().ToString("mm\\:ss\\:fff"));
		}
コード例 #5
0
        /// <summary>
        /// Processes (build web-page and send to client, process current page state) the current web-page
        /// </summary>
        /// <param name="containerProvider">The DI container provider.</param>
        /// <param name="context">The context.</param>
        public Task ProcessPage(IDIContainerProvider containerProvider, IOwinContext context)
        {
            var task = _responseWriter.WriteAsync(_pageBuilder.Build(containerProvider), context.Response);

            _redirector.PreviousPageUrl = context.Request.Uri.AbsoluteUri;

            return(task);
        }
コード例 #6
0
        public static IDIContainerProvider RegisterAll(this IDIContainerProvider provider)
        {
            provider.RegisterConfiguration()
            .RegisterMyProjectWindowsServiceWithDatabase()
            .Register <Worker>();

            return(provider);
        }
コード例 #7
0
        public static IDIContainerProvider RegisterAll(this IDIContainerProvider containerProvider)
        {
            containerProvider.RegisterSimplifyWeb()
            .RegisterJsonModelBinder()
            .RegisterSimplifyWebPostman();

            return(containerProvider);
        }
コード例 #8
0
        public static IDIContainerProvider RegisterAll(this IDIContainerProvider container)
        {
            // Manual Simplify.Web bootstrapper registration
            container.RegisterSimplifyWeb()
            .Register <WebApplicationStartup>();

            return(container);
        }
コード例 #9
0
ファイル: PageProcessor.cs プロジェクト: jmptrader/AcspNet
        /// <summary>
        /// Processes (build web-page and send to client, process current page state) the current web-page
        /// </summary>
        /// <param name="containerProvider">The DI container provider.</param>
        /// <param name="context">The context.</param>
        public Task ProcessPage(IDIContainerProvider containerProvider, IOwinContext context)
        {
            var task = _responseWriter.WriteAsync(_pageBuilder.Build(containerProvider), context.Response);

            _redirector.PreviousPageUrl = context.Request.Uri.AbsoluteUri;

            return task;
        }
コード例 #10
0
        /// <summary>
        /// Registers Simplify.Web types and controllers and use this container as current for Simplify.Web.
        /// </summary>
        /// <param name="containerProvider">The container provider.</param>
        public static IDIContainerProvider RegisterSimplifyWeb(this IDIContainerProvider containerProvider)
        {
            BootstrapperFactory.ContainerProvider = containerProvider;

            BootstrapperFactory.CreateBootstrapper().Register();

            return(containerProvider);
        }
コード例 #11
0
		/// <summary>
		/// Processes the asynchronous controllers responses.
		/// </summary>
		/// <param name="containerProvider">The container provider.</param>
		/// <returns></returns>
		public IEnumerable<ControllerResponseResult> ProcessAsyncControllersResponses(IDIContainerProvider containerProvider)
		{
			foreach (var task in _controllersResponses)
			{
				task.Wait();
				yield return ProcessControllerResponse(task.Result, containerProvider);
			}
		}
コード例 #12
0
		private ControllerResponseResult ProcessControllerResponse(ControllerResponse response, IDIContainerProvider containerProvider)
		{
			if (response == null)
				return ControllerResponseResult.Default;

			_controllerResponseBuilder.BuildControllerResponseProperties(response, containerProvider);

			return response.Process();
		}
コード例 #13
0
        public static IDIContainerProvider RegisterJiraTimers(this IDIContainerProvider container, string[] args)
        {
            container.RegisterConfiguration()
            .RegisterIts()
            .RegisterQt(args)
            .RegisterCryptography()
            .RegisterJiraTimersSettings();

            return(container);
        }
コード例 #14
0
    public static IDIContainerProvider RegisterAll(this IDIContainerProvider provider)
    {
        provider.RegisterSimplifyWeb()
        .RegisterJsonModelBinder()

        .Register(r => new WebApplicationStartupSettings(r.Resolve <IConfiguration>()), LifetimeType.Singleton)
        .Register <WebApplicationStartup>(LifetimeType.Singleton);

        return(provider);
    }
コード例 #15
0
		/// <summary>
		/// Builds the modules accessor properties.
		/// </summary>
		/// <param name="modulesAccessor">The modules accessor.</param>
		/// <param name="containerProvider">The DI container provider.</param>
		protected void BuildActionModulesAccessorProperties(ActionModulesAccessor modulesAccessor, IDIContainerProvider containerProvider)
		{
			BuildModulesAccessorProperties(modulesAccessor, containerProvider);

			modulesAccessor.Context = containerProvider.Resolve<IWebContextProvider>().Get();
			modulesAccessor.DataCollector = containerProvider.Resolve<IDataCollector>();
			modulesAccessor.Redirector = containerProvider.Resolve<IRedirector>();
			modulesAccessor.LanguageManager = containerProvider.Resolve<ILanguageManagerProvider>().Get();
			modulesAccessor.FileReader = containerProvider.Resolve<IFileReader>();
		}
コード例 #16
0
        /// <summary>
        /// Creates the controller.
        /// </summary>
        /// <param name="controllerType">Type of the controller.</param>
        /// <param name="containerProvider">The DI container provider.</param>
        /// <param name="context">The context.</param>
        /// <param name="routeParameters">The route parameters.</param>
        /// <returns></returns>
        public ControllerBase CreateController(Type controllerType, IDIContainerProvider containerProvider, IOwinContext context, dynamic routeParameters = null)
        {
            var controller = (ControllerBase)containerProvider.Resolve(controllerType);

            BuildActionModulesAccessorProperties(controller, containerProvider);

            controller.RouteParameters = routeParameters;

            return controller;
        }
コード例 #17
0
        /// <summary>
        /// Creates the controller.
        /// </summary>
        /// <param name="controllerType">Type of the controller.</param>
        /// <param name="containerProvider">The DI container provider.</param>
        /// <param name="context">The context.</param>
        /// <param name="routeParameters">The route parameters.</param>
        /// <returns></returns>
        public ControllerBase CreateController(Type controllerType, IDIContainerProvider containerProvider, IOwinContext context, dynamic routeParameters = null)
        {
            var controller = (ControllerBase)containerProvider.Resolve(controllerType);

            BuildActionModulesAccessorProperties(controller, containerProvider);

            controller.RouteParameters = routeParameters;

            return(controller);
        }
コード例 #18
0
    public static IDIContainerProvider RegisterAll(this IDIContainerProvider provider)
    {
        // Simplify.DI.DIContainer.Current IOC container registrations starting point

        provider.RegisterSimplifyWeb()
        .RegisterJsonModelBinder()

        .Register <SampleModelFactory>();

        return(provider);
    }
コード例 #19
0
ファイル: ViewFactory.cs プロジェクト: jmptrader/AcspNet
        /// <summary>
        /// Creates the view.
        /// </summary>
        /// <param name="viewType">Type of the view.</param>
        /// <param name="containerProvider">The DI container provider.</param>
        /// <returns></returns>
        public View CreateView(Type viewType, IDIContainerProvider containerProvider)
        {
            var view = (View)containerProvider.Resolve(viewType);

            BuildModulesAccessorProperties(view, containerProvider);

            view.Language = containerProvider.Resolve<ILanguageManagerProvider>().Get().Language;
            view.SiteUrl = containerProvider.Resolve<IAcspNetContextProvider>().Get().SiteUrl;

            return view;
        }
コード例 #20
0
ファイル: ViewFactory.cs プロジェクト: qinfengzhu/AcspNet
        /// <summary>
        /// Creates the view.
        /// </summary>
        /// <param name="viewType">Type of the view.</param>
        /// <param name="containerProvider">The DI container provider.</param>
        /// <returns></returns>
        public View CreateView(Type viewType, IDIContainerProvider containerProvider)
        {
            var view = (View)containerProvider.Resolve(viewType);

            BuildModulesAccessorProperties(view, containerProvider);

            view.Language = containerProvider.Resolve <ILanguageManagerProvider>().Get().Language;
            view.SiteUrl  = containerProvider.Resolve <IAcspNetContextProvider>().Get().SiteUrl;

            return(view);
        }
コード例 #21
0
        public static IDIContainerProvider RegisterAll(this IDIContainerProvider provider)
        {
            provider.RegisterConfiguration()
            .Register <DisposableDependency>()
            .Register <OneSecondStepProcessor>()
            .Register <TwoSecondStepProcessor>()
            .Register <TwoParallelTasksProcessor>()
            .Register <BasicTaskProcessor>();

            return(provider);
        }
コード例 #22
0
ファイル: PageBuilder.cs プロジェクト: i4004/Simplify.Web
		/// <summary>
		/// Buids a web page
		/// </summary>
		/// <param name="containerProvider">The DI container provider.</param>
		/// <returns></returns>
		public string Build(IDIContainerProvider containerProvider)
		{
			containerProvider.Resolve<IStringTableItemsSetter>().Set();
			containerProvider.Resolve<IContextVariablesSetter>().SetVariables(containerProvider);

			var tpl = _templateFactory.Load(containerProvider.Resolve<IEnvironment>().MasterTemplateFileName);

			foreach (var item in _dataCollector.Items.Keys)
				tpl.Set(item, _dataCollector.Items[item]);

			return tpl.Get();
		}
コード例 #23
0
		private ControllersProcessorResult ProcessController(Type controllerType, IDIContainerProvider containerProvider, IOwinContext context, dynamic routeParameters)
		{
			var result = _controllerExecutor.Execute(controllerType, containerProvider, context, routeParameters);

			if (result == ControllerResponseResult.RawOutput)
				return ControllersProcessorResult.RawOutput;

			if (result == ControllerResponseResult.Redirect)
				return ControllersProcessorResult.Redirect;

			return ControllersProcessorResult.Ok;
		}
コード例 #24
0
        private ControllersProcessorResult ProcessAsyncControllersResponses(IDIContainerProvider containerProvider)
        {
            foreach (var controllerResponseResult in _controllerExecutor.ProcessAsyncControllersResponses(containerProvider))
            {
                if (controllerResponseResult == ControllerResponseResult.RawOutput)
                    return ControllersProcessorResult.RawOutput;

                if (controllerResponseResult == ControllerResponseResult.Redirect)
                    return ControllersProcessorResult.Redirect;
            }

            return ControllersProcessorResult.Ok;
        }
コード例 #25
0
        /// <summary>
        /// Buids a web page
        /// </summary>
        /// <param name="containerProvider">The DI container provider.</param>
        /// <returns></returns>
        public string Build(IDIContainerProvider containerProvider)
        {
            containerProvider.Resolve <IStringTableItemsSetter>().Set();
            containerProvider.Resolve <IContextVariablesSetter>().SetVariables(containerProvider);

            var tpl = _templateFactory.Load(containerProvider.Resolve <IEnvironment>().MasterTemplateFileName);

            foreach (var item in _dataCollector.Items.Keys)
            {
                tpl.Set(item, _dataCollector.Items[item]);
            }

            return(tpl.Get());
        }
コード例 #26
0
        /// <summary>
        /// Process controllers for current HTTP request
        /// </summary>
        /// <param name="containerProvider">The DI container provider.</param>
        /// <param name="context">The context.</param>
        /// <returns></returns>
        public ControllersProcessorResult ProcessControllers(IDIContainerProvider containerProvider, IOwinContext context)
        {
            var atleastOneNonAnyPageControllerMatched = false;

            foreach (var metaData in _agent.GetStandardControllersMetaData())
            {
                var matcherResult = _agent.MatchControllerRoute(metaData, context.Request.Path.Value, context.Request.Method);

                if (matcherResult == null || !matcherResult.Success)
                {
                    continue;
                }

                var securityResult = _agent.IsSecurityRulesViolated(metaData, context.Authentication.User);

                if (securityResult == SecurityRuleCheckResult.NotAuthenticated)
                {
                    return(ControllersProcessorResult.Http401);
                }

                if (securityResult == SecurityRuleCheckResult.Forbidden)
                {
                    return(ProcessForbiddenSecurityRule(containerProvider, context));
                }

                var result = ProcessController(metaData.ControllerType, containerProvider, context, matcherResult.RouteParameters);

                if (result != ControllersProcessorResult.Ok)
                {
                    return(result);
                }

                if (!_agent.IsAnyPageController(metaData))
                {
                    atleastOneNonAnyPageControllerMatched = true;
                }
            }

            if (!atleastOneNonAnyPageControllerMatched)
            {
                var result = ProcessOnlyAnyPageControllersMatched(containerProvider, context);
                if (result != ControllersProcessorResult.Ok)
                {
                    return(result);
                }
            }

            return(ProcessAsyncControllersResponses(containerProvider));
        }
コード例 #27
0
        private ControllersProcessorResult ProcessController(Type controllerType, IDIContainerProvider containerProvider, IOwinContext context, dynamic routeParameters)
        {
            var result = _controllerExecutor.Execute(controllerType, containerProvider, context, routeParameters);

            if (result == ControllerResponseResult.RawOutput)
            {
                return(ControllersProcessorResult.RawOutput);
            }

            if (result == ControllerResponseResult.Redirect)
            {
                return(ControllersProcessorResult.Redirect);
            }

            return(ControllersProcessorResult.Ok);
        }
コード例 #28
0
        /// <summary>
        /// Creates Simplify.DI wrapper service provider for Microsoft.Extensions.DependencyInjection
        /// </summary>
        /// <param name="provider">The resolver.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">collection</exception>
        public static IServiceProvider CreateServiceProvider(this IDIContainerProvider provider)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }

            var serviceProvider = new DIServiceProvider(provider);

            // Registering required IOC container types wrappers in itself

            provider.Register <IServiceProvider>(x => serviceProvider, LifetimeType.Singleton);
            provider.Register <IServiceScopeFactory>(x => new DIServiceScopeFactory(provider), LifetimeType.Singleton);

            return(serviceProvider);
        }
コード例 #29
0
        private ControllersProcessorResult ProcessAsyncControllersResponses(IDIContainerProvider containerProvider)
        {
            foreach (var controllerResponseResult in _controllerExecutor.ProcessAsyncControllersResponses(containerProvider))
            {
                if (controllerResponseResult == ControllerResponseResult.RawOutput)
                {
                    return(ControllersProcessorResult.RawOutput);
                }

                if (controllerResponseResult == ControllerResponseResult.Redirect)
                {
                    return(ControllersProcessorResult.Redirect);
                }
            }

            return(ControllersProcessorResult.Ok);
        }
コード例 #30
0
		private ControllersProcessorResult ProcessOnlyAnyPageControllersMatched(IDIContainerProvider containerProvider, IOwinContext context)
		{
			var http404Controller = _agent.GetHandlerController(HandlerControllerType.Http404Handler);

			if (http404Controller == null)
				return ControllersProcessorResult.Http404;

			var handlerControllerResult = _controllerExecutor.Execute(http404Controller.ControllerType, containerProvider, context);

			if (handlerControllerResult == ControllerResponseResult.RawOutput)
				return ControllersProcessorResult.RawOutput;

			if (handlerControllerResult == ControllerResponseResult.Redirect)
				return ControllersProcessorResult.Redirect;

			return ControllersProcessorResult.Ok;
		}
コード例 #31
0
		/// <summary>
		/// Builds the modules accessor properties.
		/// </summary>
		/// <param name="modulesAccessor">The modules accessor.</param>
		/// <param name="containerProvider">The DI container provider.</param>
		protected void BuildModulesAccessorProperties(ModulesAccessor modulesAccessor, IDIContainerProvider containerProvider)
		{
			BuildViewAccessorProperties(modulesAccessor, containerProvider);

			modulesAccessor.Environment = containerProvider.Resolve<IEnvironment>();

			var stringTable = containerProvider.Resolve<IStringTable>();
			modulesAccessor.StringTable = stringTable.Items;
			modulesAccessor.StringTableManager = stringTable;

			modulesAccessor.TemplateFactory = containerProvider.Resolve<ITemplateFactory>();

			var htmlWrapper = new HtmlWrapper
			{
				ListsGenerator = containerProvider.Resolve<IListsGenerator>()
			};

			modulesAccessor.Html = htmlWrapper;
		}
コード例 #32
0
		/// <summary>
		/// Creates and executes the specified controller.
		/// </summary>
		/// <param name="controllerType">Type of the controller.</param>
		/// <param name="containerProvider">The container provider.</param>
		/// <param name="context">The context.</param>
		/// <param name="routeParameters">The route parameters.</param>
		/// <returns></returns>
		public ControllerResponseResult Execute(Type controllerType, IDIContainerProvider containerProvider, IOwinContext context,
			dynamic routeParameters = null)
		{
			ControllerBase controller = _controllerFactory.CreateController(controllerType, containerProvider, context, routeParameters);

			var syncController = controller as SyncControllerBase;

			if (syncController != null)
				return ProcessControllerResponse(syncController.Invoke(), containerProvider);

			var asyncController = controller as AsyncControllerBase;

			if (asyncController != null)
			{
				var task = asyncController.Invoke();
				_controllersResponses.Add(task);
			}

			return ControllerResponseResult.Default;
		}
コード例 #33
0
        /// <summary>
        /// Creates and executes the specified controller.
        /// </summary>
        /// <param name="controllerType">Type of the controller.</param>
        /// <param name="containerProvider">The container provider.</param>
        /// <param name="context">The context.</param>
        /// <param name="routeParameters">The route parameters.</param>
        /// <returns></returns>
        public ControllerResponseResult Execute(Type controllerType, IDIContainerProvider containerProvider, IOwinContext context,
                                                dynamic routeParameters = null)
        {
            ControllerBase controller = _controllerFactory.CreateController(controllerType, containerProvider, context, routeParameters);

            var syncController = controller as SyncControllerBase;

            if (syncController != null)
            {
                return(ProcessControllerResponse(syncController.Invoke(), containerProvider));
            }

            var asyncController = controller as AsyncControllerBase;

            if (asyncController != null)
            {
                var task = asyncController.Invoke();
                _controllersResponses.Add(task);
            }

            return(ControllerResponseResult.Default);
        }
コード例 #34
0
        private ControllersProcessorResult ProcessForbiddenSecurityRule(IDIContainerProvider containerProvider, IOwinContext context)
        {
            var http403Controller = _agent.GetHandlerController(HandlerControllerType.Http403Handler);

            if (http403Controller == null)
            {
                return(ControllersProcessorResult.Http403);
            }

            var handlerControllerResult = _controllerExecutor.Execute(http403Controller.ControllerType, containerProvider, context);

            if (handlerControllerResult == ControllerResponseResult.RawOutput)
            {
                return(ControllersProcessorResult.RawOutput);
            }

            if (handlerControllerResult == ControllerResponseResult.Redirect)
            {
                return(ControllersProcessorResult.Redirect);
            }

            return(ControllersProcessorResult.Ok);
        }
コード例 #35
0
        private ControllersProcessorResult ProcessOnlyAnyPageControllersMatched(IDIContainerProvider containerProvider, IOwinContext context)
        {
            var http404Controller = _agent.GetHandlerController(HandlerControllerType.Http404Handler);

            if (http404Controller == null)
            {
                return(ControllersProcessorResult.Http404);
            }

            var handlerControllerResult = _controllerExecutor.Execute(http404Controller.ControllerType, containerProvider, context);

            if (handlerControllerResult == ControllerResponseResult.RawOutput)
            {
                return(ControllersProcessorResult.RawOutput);
            }

            if (handlerControllerResult == ControllerResponseResult.Redirect)
            {
                return(ControllersProcessorResult.Redirect);
            }

            return(ControllersProcessorResult.Ok);
        }
コード例 #36
0
		/// <summary>
		/// Process controllers for current HTTP request
		/// </summary>
		/// <param name="containerProvider">The DI container provider.</param>
		/// <param name="context">The context.</param>
		/// <returns></returns>
		public ControllersProcessorResult ProcessControllers(IDIContainerProvider containerProvider, IOwinContext context)
		{
			var atleastOneNonAnyPageControllerMatched = false;

			foreach (var metaData in _agent.GetStandardControllersMetaData())
			{
				var matcherResult = _agent.MatchControllerRoute(metaData, context.Request.Path.Value, context.Request.Method);

				if (matcherResult == null || !matcherResult.Success) continue;

				var securityResult = _agent.IsSecurityRulesViolated(metaData, context.Authentication.User);

				if (securityResult == SecurityRuleCheckResult.NotAuthenticated)
					return ControllersProcessorResult.Http401;

				if (securityResult == SecurityRuleCheckResult.Forbidden)
					return ProcessForbiddenSecurityRule(containerProvider, context);

				var result = ProcessController(metaData.ControllerType, containerProvider, context, matcherResult.RouteParameters);

				if (result != ControllersProcessorResult.Ok)
					return result;

				if (!_agent.IsAnyPageController(metaData))
					atleastOneNonAnyPageControllerMatched = true;
			}

			if (!atleastOneNonAnyPageControllerMatched)
			{
				var result = ProcessOnlyAnyPageControllersMatched(containerProvider, context);
				if (result != ControllersProcessorResult.Ok)
					return result;
			}

			return ProcessAsyncControllersResponses(containerProvider);
		}
コード例 #37
0
		private ControllersProcessorResult ProcessForbiddenSecurityRule(IDIContainerProvider containerProvider, IOwinContext context)
		{
			var http403Controller = _agent.GetHandlerController(HandlerControllerType.Http403Handler);

			if (http403Controller == null)
				return ControllersProcessorResult.Http403;

			var handlerControllerResult = _controllerExecutor.Execute(http403Controller.ControllerType, containerProvider, context);

			if (handlerControllerResult == ControllerResponseResult.RawOutput)
				return ControllersProcessorResult.RawOutput;

			if (handlerControllerResult == ControllerResponseResult.Redirect)
				return ControllersProcessorResult.Redirect;

			return ControllersProcessorResult.Ok;
		}
コード例 #38
0
 public void Initialize()
 {
     _provider = new AutofacDIProvider();
 }
コード例 #39
0
ファイル: RequestHandler.cs プロジェクト: qinfengzhu/AcspNet
 /// <summary>
 /// Processes the OWIN HTTP request.
 /// </summary>
 /// <param name="containerProvider">The DI container provider.</param>
 /// <param name="context">The context.</param>
 /// <returns></returns>
 public Task ProcessRequest(IDIContainerProvider containerProvider, IOwinContext context)
 {
     return(_staticFilesRequestHandler.IsStaticFileRoutePath(context)
                         ? _staticFilesRequestHandler.ProcessRequest(context)
                         : _controllersRequestHandler.ProcessRequest(containerProvider, context));
 }
コード例 #40
0
		/// <summary>
		/// Builds the view accessor properties.
		/// </summary>
		/// <param name="viewAccessor">The view accessor.</param>
		/// <param name="containerProvider">The DI container provider.</param>
		protected void BuildViewAccessorProperties(ViewAccessor viewAccessor, IDIContainerProvider containerProvider)
		{
			viewAccessor.ContainerProvider = containerProvider;
			viewAccessor.ViewFactory = containerProvider.Resolve<IViewFactory>();
		}
コード例 #41
0
 public void Initialize()
 {
     _provider = new SimpleInjectorDIProvider();
 }
コード例 #42
0
        /// <summary>
        /// Builds the modules accessor properties.
        /// </summary>
        /// <param name="modulesAccessor">The modules accessor.</param>
        /// <param name="containerProvider">The DI container provider.</param>
        protected void BuildModulesAccessorProperties(ModulesAccessor modulesAccessor, IDIContainerProvider containerProvider)
        {
            BuildViewAccessorProperties(modulesAccessor, containerProvider);

            modulesAccessor.Environment = containerProvider.Resolve <IEnvironment>();

            var stringTable = containerProvider.Resolve <IStringTable>();

            modulesAccessor.StringTable        = stringTable.Items;
            modulesAccessor.StringTableManager = stringTable;

            modulesAccessor.TemplateFactory = containerProvider.Resolve <ITemplateFactory>();

            var htmlWrapper = new HtmlWrapper
            {
                ListsGenerator = containerProvider.Resolve <IListsGenerator>()
            };

            modulesAccessor.Html = htmlWrapper;
        }
コード例 #43
0
 public void Initialize()
 {
     _provider = new DryIocDIProvider();
 }
コード例 #44
0
		/// <summary>
		/// Builds the controller response properties.
		/// </summary>
		/// <param name="controllerResponse">The controller response.</param>
		/// <param name="containerProvider">The DI container provider.</param>
		public void BuildControllerResponseProperties(ControllerResponse controllerResponse, IDIContainerProvider containerProvider)
		{
			BuildActionModulesAccessorProperties(controllerResponse, containerProvider);

			controllerResponse.ResponseWriter = containerProvider.Resolve<IResponseWriter>();
		}
コード例 #45
0
        /// <summary>
        /// Builds the controller response properties.
        /// </summary>
        /// <param name="controllerResponse">The controller response.</param>
        /// <param name="containerProvider">The DI container provider.</param>
        public void BuildControllerResponseProperties(ControllerResponse controllerResponse, IDIContainerProvider containerProvider)
        {
            BuildActionModulesAccessorProperties(controllerResponse, containerProvider);

            controllerResponse.ResponseWriter = containerProvider.Resolve <IResponseWriter>();
        }
コード例 #46
0
 /// <summary>
 /// Processes the asynchronous controllers responses.
 /// </summary>
 /// <param name="containerProvider">The container provider.</param>
 /// <returns></returns>
 public IEnumerable <ControllerResponseResult> ProcessAsyncControllersResponses(IDIContainerProvider containerProvider)
 {
     foreach (var task in _controllersResponses)
     {
         task.Wait();
         yield return(ProcessControllerResponse(task.Result, containerProvider));
     }
 }
コード例 #47
0
        private ControllerResponseResult ProcessControllerResponse(ControllerResponse response, IDIContainerProvider containerProvider)
        {
            if (response == null)
            {
                return(ControllerResponseResult.Default);
            }

            _controllerResponseBuilder.BuildControllerResponseProperties(response, containerProvider);

            return(response.Process());
        }
コード例 #48
0
ファイル: RequestHandler.cs プロジェクト: i4004/Simplify.Web
		/// <summary>
		/// Processes the OWIN HTTP request.
		/// </summary>
		/// <param name="containerProvider">The DI container provider.</param>
		/// <param name="context">The context.</param>
		/// <returns></returns>
		public Task ProcessRequest(IDIContainerProvider containerProvider, IOwinContext context)
		{
			return _staticFilesRequestHandler.IsStaticFileRoutePath(context)
				? _staticFilesRequestHandler.ProcessRequest(context)
				: _controllersRequestHandler.ProcessRequest(containerProvider, context);
		}
コード例 #49
0
        /// <summary>
        /// Builds the modules accessor properties.
        /// </summary>
        /// <param name="modulesAccessor">The modules accessor.</param>
        /// <param name="containerProvider">The DI container provider.</param>
        protected void BuildActionModulesAccessorProperties(ActionModulesAccessor modulesAccessor, IDIContainerProvider containerProvider)
        {
            BuildModulesAccessorProperties(modulesAccessor, containerProvider);

            modulesAccessor.Context         = containerProvider.Resolve <IWebContextProvider>().Get();
            modulesAccessor.DataCollector   = containerProvider.Resolve <IDataCollector>();
            modulesAccessor.Redirector      = containerProvider.Resolve <IRedirector>();
            modulesAccessor.LanguageManager = containerProvider.Resolve <ILanguageManagerProvider>().Get();
            modulesAccessor.FileReader      = containerProvider.Resolve <IFileReader>();
        }