Example #1
0
        public async Task Invoke(HttpContext context, ServiceFactory serviceFactory)
        {
            var mediatorWrapperType = MediatorRegistry.FindWrapperType(context.Request.Path);

            if (mediatorWrapperType is null)
            {
                await Next.Invoke(context);

                return;
            }

            var mediatorWrapper = TryFindWrapper(context, serviceFactory);

            if (mediatorWrapper is null)
            {
                await Next.Invoke(context);

                return;
            }

            var requestObject = await DeserializeRequest(context.Request, mediatorWrapper.MessageType);

            if (requestObject is null)
            {
                await Next.Invoke(context);

                return;
            }

            var responseObject = await TryInvoke(context, requestObject, mediatorWrapper);

            await SerializeResponse(context.Response, responseObject);
        }
Example #2
0
        public virtual IMediatorWrapper TryFindWrapper(HttpContext context, ServiceFactory serviceFactory)
        {
            try
            {
                var mediatorWrapperType = MediatorRegistry.FindWrapperType(context.Request.Path);

                if (!(mediatorWrapperType is null))
                {
                    return(serviceFactory(mediatorWrapperType) as IMediatorWrapper);
                }
            }
            catch (Exception ex)
            {
                //TODO: Log Exception
                Debug.WriteLine(ex.Message);
            }

            return(default);