Esempio n. 1
0
        /// <summary>
        /// Creates a dotNetify hub that uses HTTP context for its hub context, and sets the response callback to a local function.
        /// </summary>
        /// <param name="vmControllerFactory">Factory of view model controllers.</param>
        /// <param name="serviceProvider">Allows to provide scoped service provider for the view models.</param>
        /// <param name="principalAccessor">Allows to pass the hub principal.</param>
        /// <param name="hubPipeline">Manages middlewares and view model filters.</param>
        /// <param name="hubResponseFactory">Factory of objects to send responses back to hub clients.</param>
        /// <param name="callType">Hub call type.</param>
        /// <param name="vmId">Identifies the view model.</param>
        /// <param name="data">View model data.</param>
        /// <returns>Hub instance.</returns>
        private IDotNetifyHubHandler CreateHubHandler(
            IVMControllerFactory vmControllerFactory,
            IHubServiceProvider hubServiceProvider,
            IPrincipalAccessor principalAccessor,
            IHubPipeline hubPipeline,
            IDotNetifyHubResponseManager hubResponseManager,
            string callType,
            string vmId,
            object data = null)
        {
            var httpCallerContext = new HttpCallerContext(HttpContext);

            if (principalAccessor is HubInfoAccessor)
            {
                var hubPrincipalAccessor = principalAccessor as HubInfoAccessor;
                hubPrincipalAccessor.Principal = HttpContext?.User;
                hubPrincipalAccessor.Context   = new DotNetifyHubContext(httpCallerContext, callType, vmId, data, null, hubPrincipalAccessor.Principal);
            }

            return(new DotNetifyHubHandler(vmControllerFactory, hubServiceProvider, principalAccessor, hubPipeline, hubResponseManager)
            {
                CallerContext = httpCallerContext,
                OnVMResponse = ResponseVMCallback
            });
        }
Esempio n. 2
0
        /// <summary>
        /// Initializes the scoped context of the request.
        /// </summary>
        /// <param name="vmController">View model controller.</param>
        /// <param name="hubServiceProvider">Service provideer context.</param>
        /// <param name="principalAccessor">Principal user context.</param>
        /// <returns>HTTP caller context.</returns>
        private HttpCallerContext InitializeContext(VMController vmController, IHubServiceProvider hubServiceProvider, IPrincipalAccessor principalAccessor)
        {
            if (hubServiceProvider is HubServiceProvider)
            {
                (hubServiceProvider as HubServiceProvider).ServiceProvider = vmController.ServiceProvider;
            }

            var httpCallerContext = new HttpCallerContext(HttpContext);

            if (principalAccessor is HubPrincipalAccessor)
            {
                var hubPrincipalAccessor = principalAccessor as HubPrincipalAccessor;
                hubPrincipalAccessor.Principal     = HttpContext?.User;
                hubPrincipalAccessor.CallerContext = httpCallerContext;
            }
            return(httpCallerContext);
        }