in Libraries/src/Amazon.Lambda.Serialization.Json/AwsResolver.cs [57:158]
protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
{
IList<JsonProperty> properties = base.CreateProperties(type, memberSerialization);
// S3 events use non-standard key formatting for request IDs and need to be mapped to the correct properties
if (type.FullName.Equals("Amazon.S3.Util.S3EventNotification+ResponseElementsEntity", StringComparison.Ordinal))
{
foreach (JsonProperty property in properties)
{
if (property.PropertyName.Equals("XAmzRequestId", StringComparison.Ordinal))
{
property.PropertyName = "x-amz-request-id";
}
else if (property.PropertyName.Equals("XAmzId2", StringComparison.Ordinal))
{
property.PropertyName = "x-amz-id-2";
}
}
}
else if (type.FullName.Equals("Amazon.Lambda.KinesisEvents.KinesisEvent+Record", StringComparison.Ordinal))
{
foreach (JsonProperty property in properties)
{
if (property.PropertyName.Equals("Data", StringComparison.Ordinal))
{
property.MemberConverter = StreamDataConverter;
}
else if (property.PropertyName.Equals("ApproximateArrivalTimestamp", StringComparison.Ordinal))
{
property.MemberConverter = DateTimeConverter;
}
}
}
else if (
type.FullName.Equals("Amazon.Lambda.DynamoDBEvents.DynamoDBEvent+StreamRecord", StringComparison.Ordinal) ||
type.FullName.Equals("Amazon.DynamoDBv2.Model.StreamRecord", StringComparison.Ordinal)
)
{
foreach (JsonProperty property in properties)
{
if (property.PropertyName.Equals("ApproximateCreationDateTime", StringComparison.Ordinal))
{
property.MemberConverter = DateTimeConverter;
}
}
}
else if (
type.FullName.Equals("Amazon.Lambda.DynamoDBEvents.DynamoDBEvent+AttributeValue", StringComparison.Ordinal) ||
type.FullName.Equals("Amazon.DynamoDBv2.Model.AttributeValue", StringComparison.Ordinal)
)
{
foreach (JsonProperty property in properties)
{
if (property.PropertyName.Equals("B", StringComparison.Ordinal))
{
property.MemberConverter = StreamDataConverter;
}
else if (property.PropertyName.Equals("BS", StringComparison.Ordinal))
{
property.MemberConverter = StreamListDataConverter;
}
}
}
else if (type.FullName.Equals("Amazon.Lambda.SQSEvents.SQSEvent+MessageAttribute", StringComparison.Ordinal))
{
foreach (JsonProperty property in properties)
{
if (property.PropertyName.Equals("BinaryValue", StringComparison.Ordinal))
{
property.MemberConverter = StreamDataConverter;
}
else if (property.PropertyName.Equals("BinaryListValues", StringComparison.Ordinal))
{
property.MemberConverter = StreamListDataConverter;
}
}
}
// If user is directly using CloudWatchEvent class or using a derived type created in custom namespace.
else if (type.FullName.StartsWith("Amazon.Lambda.CloudWatchEvents.")
|| (type.GetTypeInfo().BaseType?.FullName?.StartsWith("Amazon.Lambda.CloudWatchEvents.CloudWatchEvent`",
StringComparison.Ordinal) ?? false))
{
foreach (JsonProperty property in properties)
{
if (property.PropertyName.Equals("DetailType", StringComparison.Ordinal))
{
property.PropertyName = "detail-type";
}
}
}
else if (type.FullName.Equals("Amazon.Lambda.KafkaEvents.KafkaEvent+KafkaEventRecord", StringComparison.Ordinal))
{
foreach (JsonProperty property in properties)
{
if (property.PropertyName.Equals("Value", StringComparison.Ordinal))
{
property.MemberConverter = StreamDataConverter;
}
}
}
return properties;
}