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); }
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);