private void ProcessNotification(CancellationToken cancellationToken, PluginMessageRequest request) { try { if (cancellationToken.IsCancellationRequested) { return; } if (!WebNotificationCryptography.ValidateRequest(request.Authorization)) { WebNotificationEventSource.Log.AuthorizationValidationFailed(); return; } var message = this.GetMessage(request); if (message == null) { WebNotificationEventSource.Log.MessageInvalid(); return; } CacheInvalidation.ProcessMessage(message); if (SearchIndexApplicableMessages.Contains(message.MessageName, MessageComparer)) { var serviceContext = CrmConfigurationManager.CreateContext(); SearchIndexBuildRequest.ProcessMessage(message, serviceContext: serviceContext); } } catch (TaskCanceledException e) { ADXTrace.Instance.TraceWarning(TraceCategory.Application, e.Message); } }
public override async Task Invoke(IOwinContext context) { if (Equals(context.Request.Path, this.Options.CallbackPath)) { var request = new PluginMessageRequest { Authorization = context.Request.Headers["Authorization"], ContentType = context.Request.ContentType, Body = context.GetRequestBody() }; var message = this.GetPluginMessage(request.Body); if (message != null && WebNotificationCryptography.ValidateRequest(request.Authorization)) { ADXTrace.Instance.TraceInfo(TraceCategory.Application, "Posting message"); await this.PostAsync(context, message).WithCurrentCulture(); } } await this.Next.Invoke(context); }