Browse Source

Add `IsAbpDaprEventData` to check the data.

pull/16795/head
maliming 3 years ago
parent
commit
9d1e941d39
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 11
      framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Controllers/AbpAspNetCoreMvcDaprEventsController.cs

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

Loading…
Cancel
Save