diff --git a/.autover/changes/be8e0154-524e-402e-bb5d-ab1a0c3dea95.json b/.autover/changes/be8e0154-524e-402e-bb5d-ab1a0c3dea95.json new file mode 100644 index 000000000..d4e9e8be4 --- /dev/null +++ b/.autover/changes/be8e0154-524e-402e-bb5d-ab1a0c3dea95.json @@ -0,0 +1,18 @@ +{ + "Projects": [ + { + "Name": "Amazon.Lambda.DynamoDBEvents.SDK.Convertor", + "Type": "Major", + "ChangelogMessages": [ + "Update to AWS SDK for .NET V4" + ] + }, + { + "Name": "Amazon.Lambda.KinesisEvents", + "Type": "Major", + "ChangelogMessages": [ + "Update to AWS SDK for .NET V4" + ] + } + ] +} \ No newline at end of file diff --git a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/Amazon.Lambda.DynamoDBEvents.SDK.Convertor.csproj b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/Amazon.Lambda.DynamoDBEvents.SDK.Convertor.csproj index 0ec829576..d1a5d1ecc 100644 --- a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/Amazon.Lambda.DynamoDBEvents.SDK.Convertor.csproj +++ b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/Amazon.Lambda.DynamoDBEvents.SDK.Convertor.csproj @@ -16,7 +16,8 @@ - + + diff --git a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbAttributeValueConvertor.cs b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbAttributeValueConvertor.cs index c48449e7d..d32af79bf 100644 --- a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbAttributeValueConvertor.cs +++ b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbAttributeValueConvertor.cs @@ -97,5 +97,96 @@ public static Amazon.DynamoDBv2.Model.AttributeValue ConvertToSdkAttribute(this return sdkDictionary; } + + /// + /// Convert Lambda AttributeValue to SDK AttributeValue + /// + /// The Lambda AttributeValue to convert. + /// The converted SDK AttributeValue. + public static Amazon.DynamoDBStreams.Model.AttributeValue ConvertToSdkStreamAttribute(this + DynamoDBEvent.AttributeValue lambdaAttribute) + { + if (lambdaAttribute == null) + return null; + + var sdkAttribute = new Amazon.DynamoDBStreams.Model.AttributeValue(); + + // String + if (!string.IsNullOrEmpty(lambdaAttribute.S)) + sdkAttribute.S = lambdaAttribute.S; + + // Number + else if (!string.IsNullOrEmpty(lambdaAttribute.N)) + sdkAttribute.N = lambdaAttribute.N; + + // Boolean + else if (lambdaAttribute.BOOL.HasValue) + { + sdkAttribute.BOOL = lambdaAttribute.BOOL.Value; + } + + // Null + else if (lambdaAttribute.NULL.HasValue) + sdkAttribute.NULL = lambdaAttribute.NULL.Value; + + // Binary + else if (lambdaAttribute.B != null) + sdkAttribute.B = lambdaAttribute.B; + + // String Set + else if (lambdaAttribute.SS != null) + sdkAttribute.SS = new List(lambdaAttribute.SS); + + // Number Set + else if (lambdaAttribute.NS != null) + sdkAttribute.NS = new List(lambdaAttribute.NS); + + // Binary Set + else if (lambdaAttribute.BS != null) + sdkAttribute.BS = lambdaAttribute.BS; + + // List + else if (lambdaAttribute.L != null) + { + sdkAttribute.L = new List(); + foreach (var item in lambdaAttribute.L) + { + sdkAttribute.L.Add(item.ConvertToSdkStreamAttribute()); + } + } + + // Map + else if (lambdaAttribute.M != null) + { + sdkAttribute.M = new Dictionary(); + foreach (var kvp in lambdaAttribute.M) + { + sdkAttribute.M[kvp.Key] = kvp.Value.ConvertToSdkStreamAttribute(); + } + } + + return sdkAttribute; + } + + /// + /// Convert Dictionary of Lambda AttributeValue to SDK Dictionary of AttributeValue + /// + /// The dictionary of Lambda AttributeValue to convert. + /// The converted dictionary of SDK AttributeValue. + public static Dictionary ConvertToSdkStreamAttributeValueDictionary( + this Dictionary lambdaAttributes) + { + var sdkDictionary = new Dictionary(); + + if (lambdaAttributes == null) + return sdkDictionary; + + foreach (var kvp in lambdaAttributes) + { + sdkDictionary[kvp.Key] = ConvertToSdkStreamAttribute(kvp.Value); + } + + return sdkDictionary; + } } } diff --git a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbIdentityConvertor.cs b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbIdentityConvertor.cs index 143bd19f6..9e092175b 100644 --- a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbIdentityConvertor.cs +++ b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbIdentityConvertor.cs @@ -11,12 +11,12 @@ public static class DynamodbIdentityConvertor /// /// The Lambda Identity to convert. /// The converted SDK Identity. - public static Amazon.DynamoDBv2.Model.Identity ConvertToSdkIdentity(this DynamoDBEvent.Identity lambdaIdentity) + public static Amazon.DynamoDBStreams.Model.Identity ConvertToSdkIdentity(this DynamoDBEvent.Identity lambdaIdentity) { if (lambdaIdentity == null) return null; - var sdkIdentity = new Amazon.DynamoDBv2.Model.Identity + var sdkIdentity = new Amazon.DynamoDBStreams.Model.Identity { PrincipalId = lambdaIdentity.PrincipalId, Type = lambdaIdentity.Type diff --git a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbStreamRecordConvertor.cs b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbStreamRecordConvertor.cs index 39f10f666..c84d956b6 100644 --- a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbStreamRecordConvertor.cs +++ b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbStreamRecordConvertor.cs @@ -11,17 +11,17 @@ public static class DynamodbStreamRecordConvertor /// /// The Lambda StreamRecord to convert. /// The converted SDK StreamRecord. - public static Amazon.DynamoDBv2.Model.StreamRecord ConvertToSdkStreamRecord(this DynamoDBEvent.StreamRecord lambdaStreamRecord) + public static Amazon.DynamoDBStreams.Model.StreamRecord ConvertToSdkStreamRecord(this DynamoDBEvent.StreamRecord lambdaStreamRecord) { if (lambdaStreamRecord == null) return null; - var sdkStreamRecord = new Amazon.DynamoDBv2.Model.StreamRecord + var sdkStreamRecord = new Amazon.DynamoDBStreams.Model.StreamRecord { ApproximateCreationDateTime = lambdaStreamRecord.ApproximateCreationDateTime, - Keys = lambdaStreamRecord.Keys?.ConvertToSdkAttributeValueDictionary(), - NewImage = lambdaStreamRecord.NewImage?.ConvertToSdkAttributeValueDictionary(), - OldImage = lambdaStreamRecord.OldImage?.ConvertToSdkAttributeValueDictionary(), + Keys = lambdaStreamRecord.Keys?.ConvertToSdkStreamAttributeValueDictionary(), + NewImage = lambdaStreamRecord.NewImage?.ConvertToSdkStreamAttributeValueDictionary(), + OldImage = lambdaStreamRecord.OldImage?.ConvertToSdkStreamAttributeValueDictionary(), SequenceNumber = lambdaStreamRecord.SequenceNumber, SizeBytes = lambdaStreamRecord.SizeBytes, StreamViewType = lambdaStreamRecord.StreamViewType diff --git a/Libraries/src/Amazon.Lambda.KinesisEvents/Amazon.Lambda.KinesisEvents.csproj b/Libraries/src/Amazon.Lambda.KinesisEvents/Amazon.Lambda.KinesisEvents.csproj index 2f2574523..5577c54d1 100644 --- a/Libraries/src/Amazon.Lambda.KinesisEvents/Amazon.Lambda.KinesisEvents.csproj +++ b/Libraries/src/Amazon.Lambda.KinesisEvents/Amazon.Lambda.KinesisEvents.csproj @@ -13,7 +13,7 @@ - + diff --git a/Libraries/test/EventsTests.NET6/EventsTests.NET6.csproj b/Libraries/test/EventsTests.NET6/EventsTests.NET6.csproj index 5e64d7c09..bd4f561f0 100644 --- a/Libraries/test/EventsTests.NET6/EventsTests.NET6.csproj +++ b/Libraries/test/EventsTests.NET6/EventsTests.NET6.csproj @@ -55,14 +55,14 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Libraries/test/EventsTests.NET8/EventsTests.NET8.csproj b/Libraries/test/EventsTests.NET8/EventsTests.NET8.csproj index db86179bf..aba878851 100644 --- a/Libraries/test/EventsTests.NET8/EventsTests.NET8.csproj +++ b/Libraries/test/EventsTests.NET8/EventsTests.NET8.csproj @@ -47,14 +47,14 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Libraries/test/EventsTests.NETCore31/EventsTests.NETCore31.csproj b/Libraries/test/EventsTests.NETCore31/EventsTests.NETCore31.csproj index 1c5812340..bc8b98c24 100644 --- a/Libraries/test/EventsTests.NETCore31/EventsTests.NETCore31.csproj +++ b/Libraries/test/EventsTests.NETCore31/EventsTests.NETCore31.csproj @@ -55,11 +55,11 @@ - + - + diff --git a/Libraries/test/EventsTests.Shared/EventTests.cs b/Libraries/test/EventsTests.Shared/EventTests.cs index fa2cf6e04..24ee824bd 100644 --- a/Libraries/test/EventsTests.Shared/EventTests.cs +++ b/Libraries/test/EventsTests.Shared/EventTests.cs @@ -319,9 +319,9 @@ public void KinesisTest(Type serializerType) #if NET8_0_OR_GREATER // Starting with .NET 7 the precision of the underlying AddSeconds method was changed. // https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/7.0/datetime-add-precision - Assert.Equal(636162383234769999, record.Kinesis.ApproximateArrivalTimestamp.ToUniversalTime().Ticks); + Assert.Equal(636162383234769999, record.Kinesis.ApproximateArrivalTimestamp.Value.ToUniversalTime().Ticks); #else - Assert.Equal(636162383234770000, record.Kinesis.ApproximateArrivalTimestamp.ToUniversalTime().Ticks); + Assert.Equal(636162383234770000, record.Kinesis.ApproximateArrivalTimestamp.Value.ToUniversalTime().Ticks); #endif Handle(kinesisEvent); @@ -409,7 +409,7 @@ public void KinesisTimeWindowTest(Type serializerType) var dataBytes = record.Kinesis.Data.ToArray(); Assert.Equal(Convert.ToBase64String(dataBytes), "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg=="); Assert.Equal(Encoding.UTF8.GetString(dataBytes), "Hello, this is a test."); - Assert.Equal(637430942750000000, record.Kinesis.ApproximateArrivalTimestamp.ToUniversalTime().Ticks); + Assert.Equal(637430942750000000, record.Kinesis.ApproximateArrivalTimestamp.Value.ToUniversalTime().Ticks); Handle(kinesisTimeWindowEvent); } @@ -3915,4 +3915,4 @@ class ClassUsingPascalCase } } } -#pragma warning restore 618 \ No newline at end of file +#pragma warning restore 618