Browse Source
Add `IsAbpDaprEventData` to check the data.
pull/16795/head
maliming
3 years ago
No known key found for this signature in database
GPG Key ID: A646B9CB645ECEA4
1 changed files with
10 additions and
1 deletions
-
framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Controllers/AbpAspNetCoreMvcDaprEventsController.cs
|
|
|
@ -34,7 +34,7 @@ public class AbpAspNetCoreMvcDaprEventsController : AbpController |
|
|
|
|
|
|
|
var distributedEventBus = HttpContext.RequestServices.GetRequiredService<DaprDistributedEventBus>(); |
|
|
|
|
|
|
|
if (data.Contains("Data") && data.Contains("CorrelationId")) //TODO: Check the json with JSON Schema.
|
|
|
|
if (IsAbpDaprEventData(data)) |
|
|
|
{ |
|
|
|
var abpDaprEventData = daprSerializer.Deserialize(data, typeof(AbpDaprEventData<>).MakeGenericType(distributedEventBus.GetEventType(topic))); |
|
|
|
var eventData = abpDaprEventData.GetType().GetProperties().First(x => x.Name == "Data").GetValue(abpDaprEventData); |
|
|
|
@ -48,4 +48,13 @@ public class AbpAspNetCoreMvcDaprEventsController : AbpController |
|
|
|
} |
|
|
|
return Ok(); |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual bool IsAbpDaprEventData(string data) |
|
|
|
{ |
|
|
|
var document = JsonDocument.Parse(data); |
|
|
|
var objects = document.RootElement.EnumerateObject().ToList(); |
|
|
|
return objects.Count == 2 && |
|
|
|
objects.Any(x => x.Name.Equals("correlationId", StringComparison.CurrentCultureIgnoreCase)) && |
|
|
|
objects.Any(x => x.Name.Equals("data", StringComparison.CurrentCultureIgnoreCase)); |
|
|
|
} |
|
|
|
} |
|
|
|
|