diff --git a/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateParallelDataStateChange.cs b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateParallelDataStateChange.cs new file mode 100644 index 000000000..4edb431f0 --- /dev/null +++ b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateParallelDataStateChange.cs @@ -0,0 +1,37 @@ +using System; + +namespace Amazon.Lambda.CloudWatchEvents.TranslateEvents +{ + /// + /// This class represents the details of a Translate Parallel Data State Change + // for CreateParallelData and UpdateParallelData events sent via EventBridge. + /// For more see - https://docs.aws.amazon.com/translate/latest/dg/monitoring-with-eventbridge.html + /// + public class TranslateParallelDataStateChange + { + /// + /// The CreateParallelData/UpdateParallelData operation. + /// + public string Operation { get; set; } + + /// + /// The CreateParallelData/UpdateParallelData name. + /// + public string Name { get; set; } + + /// + /// The CreateParallelData/UpdateParallelData status. + /// + public string Status { get; set; } + + /// + /// The UpdateParallelData latest update attempt status. + /// + public string LatestUpdateAttemptStatus { get; set; } + + /// + /// The UpdateParallelData latest update attempt at. + /// + public DateTime LatestUpdateAttemptAt { get; set; } + } +} diff --git a/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateParallelDataStateChangeEvent.cs b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateParallelDataStateChangeEvent.cs new file mode 100644 index 000000000..fcbf8b0ee --- /dev/null +++ b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateParallelDataStateChangeEvent.cs @@ -0,0 +1,7 @@ +namespace Amazon.Lambda.CloudWatchEvents.TranslateEvents +{ + /// + /// This class represents a Translate Parallel Data State Change sent via EventBridge. + /// + public class TranslateParallelDataStateChangeEvent : CloudWatchEvent{ } +} diff --git a/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateTextTranslationJobStateChange.cs b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateTextTranslationJobStateChange.cs new file mode 100644 index 000000000..9403e90d9 --- /dev/null +++ b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateTextTranslationJobStateChange.cs @@ -0,0 +1,19 @@ +namespace Amazon.Lambda.CloudWatchEvents.TranslateEvents +{ + /// + /// This class represents the details of a Translate Text Translation Job State Change sent via EventBridge. + /// For more see - https://docs.aws.amazon.com/translate/latest/dg/monitoring-with-eventbridge.html + /// + public class TranslateTextTranslationJobStateChange + { + /// + /// The translation job id. + /// + public string JobId { get; set; } + + /// + /// The translation job status. + /// + public string JobStatus { get; set; } + } +} diff --git a/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateTextTranslationJobStateChangeEvent.cs b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateTextTranslationJobStateChangeEvent.cs new file mode 100644 index 000000000..842df82a9 --- /dev/null +++ b/Libraries/src/Amazon.Lambda.CloudWatchEvents/TranslateEvents/TranslateTextTranslationJobStateChangeEvent.cs @@ -0,0 +1,7 @@ +namespace Amazon.Lambda.CloudWatchEvents.TranslateEvents +{ + /// + /// This class represents a Translate Text Translation Job State Change sent via EventBridge. + /// + public class TranslateTextTranslationJobStateChangeEvent : CloudWatchEvent{ } +} diff --git a/Libraries/test/EventsTests.Shared/EventTests.cs b/Libraries/test/EventsTests.Shared/EventTests.cs index 4f7d5e8ab..af8e05634 100644 --- a/Libraries/test/EventsTests.Shared/EventTests.cs +++ b/Libraries/test/EventsTests.Shared/EventTests.cs @@ -7,6 +7,7 @@ namespace Amazon.Lambda.Tests using Amazon.Lambda.CloudWatchEvents.ECSEvents; using Amazon.Lambda.CloudWatchEvents.ScheduledEvents; using Amazon.Lambda.CloudWatchEvents.TranscribeEvents; + using Amazon.Lambda.CloudWatchEvents.TranslateEvents; using Amazon.Lambda.CloudWatchLogsEvents; using Amazon.Lambda.CognitoEvents; using Amazon.Lambda.ConfigEvents; @@ -3148,6 +3149,73 @@ public void CloudWatchTranscribeJobStateChangeFailed(Type serializerType) } } + [Theory] + [InlineData(typeof(JsonSerializer))] +#if NETCOREAPP3_1_OR_GREATER + [InlineData(typeof(Amazon.Lambda.Serialization.SystemTextJson.LambdaJsonSerializer))] + [InlineData(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))] +#endif + public void CloudWatchTranslateTextTranslationJobStateChange(Type serializerType) + { + var serializer = Activator.CreateInstance(serializerType) as ILambdaSerializer; + using (var fileStream = LoadJsonTestFile("cloudwatchevents-translatetexttranslationjobstatechange.json")) + { + var request = serializer.Deserialize(fileStream); + Assert.Equal("8882c5af-c9da-4a58-99e2-91fbe33b9e52", request.Id); + + var detail = request.Detail; + Assert.NotNull(detail); + Assert.Equal("8ce682a1-9be8-4f2c-875c-f8ae2fe1b015", detail.JobId); + Assert.Equal("COMPLETED", detail.JobStatus); + } + } + + [Theory] + [InlineData(typeof(JsonSerializer))] +#if NETCOREAPP3_1_OR_GREATER + [InlineData(typeof(Amazon.Lambda.Serialization.SystemTextJson.LambdaJsonSerializer))] + [InlineData(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))] +#endif + public void CloudWatchTranslateParallelDataStateChangeCreate(Type serializerType) + { + var serializer = Activator.CreateInstance(serializerType) as ILambdaSerializer; + using (var fileStream = LoadJsonTestFile("cloudwatchevents-translateparalleldatastatechange-create.json")) + { + var request = serializer.Deserialize(fileStream); + Assert.Equal("e99030f3-a7a8-42f5-923a-684fbf9bff65", request.Id); + + var detail = request.Detail; + Assert.NotNull(detail); + Assert.Equal("CreateParallelData", detail.Operation); + Assert.Equal("ExampleParallelData", detail.Name); + Assert.Equal("ACTIVE", detail.Status); + } + } + + [Theory] + [InlineData(typeof(JsonSerializer))] +#if NETCOREAPP3_1_OR_GREATER + [InlineData(typeof(Amazon.Lambda.Serialization.SystemTextJson.LambdaJsonSerializer))] + [InlineData(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))] +#endif + public void CloudWatchTranslateParallelDataStateChangeUpdate(Type serializerType) + { + var serializer = Activator.CreateInstance(serializerType) as ILambdaSerializer; + using (var fileStream = LoadJsonTestFile("cloudwatchevents-translateparalleldatastatechange-update.json")) + { + var request = serializer.Deserialize(fileStream); + Assert.Equal("920d9de3-fbd0-4cfb-87aa-e35b5f7cba8f", request.Id); + + var detail = request.Detail; + Assert.NotNull(detail); + Assert.Equal("UpdateParallelData", detail.Operation); + Assert.Equal("ExampleParallelData2", detail.Name); + Assert.Equal("ACTIVE", detail.Status); + Assert.Equal("ACTIVE", detail.LatestUpdateAttemptStatus); + Assert.Equal(DateTime.Parse("2023-03-02T03:31:47Z").ToUniversalTime(), detail.LatestUpdateAttemptAt); + + } + } class ClassUsingPascalCase { public int SomeValue { get; set; } diff --git a/Libraries/test/EventsTests.Shared/cloudwatchevents-translateparalleldatastatechange-create.json b/Libraries/test/EventsTests.Shared/cloudwatchevents-translateparalleldatastatechange-create.json new file mode 100644 index 000000000..320724e2c --- /dev/null +++ b/Libraries/test/EventsTests.Shared/cloudwatchevents-translateparalleldatastatechange-create.json @@ -0,0 +1,17 @@ +{ + "version": "0", + "id": "e99030f3-a7a8-42f5-923a-684fbf9bff65", + "detail-type": "Translate Parallel Data State Change", + "source": "aws.translate", + "account": "111122223333", + "time": "2017-04-22T03:31:47Z", + "region": "us-east-1", + "resources": [ + "arn:aws:translate:us-east-1:111122223333:parallel-data/ExampleParallelData" + ], + "detail": { + "operation": "CreateParallelData", + "name": "ExampleParallelData", + "status": "ACTIVE" + } +} diff --git a/Libraries/test/EventsTests.Shared/cloudwatchevents-translateparalleldatastatechange-update.json b/Libraries/test/EventsTests.Shared/cloudwatchevents-translateparalleldatastatechange-update.json new file mode 100644 index 000000000..5ddc2b5d6 --- /dev/null +++ b/Libraries/test/EventsTests.Shared/cloudwatchevents-translateparalleldatastatechange-update.json @@ -0,0 +1,19 @@ +{ + "version": "0", + "id": "920d9de3-fbd0-4cfb-87aa-e35b5f7cba8f", + "detail-type": "Translate Parallel Data State Change", + "source": "aws.translate", + "account": "111122223333", + "time": "2017-04-22T03:31:47Z", + "region": "us-east-1", + "resources": [ + "arn:aws:translate:us-east-1:111122223333:parallel-data/ExampleParallelData" + ], + "detail": { + "operation": "UpdateParallelData", + "name": "ExampleParallelData2", + "status": "ACTIVE", + "latestUpdateAttemptStatus": "ACTIVE", + "latestUpdateAttemptAt": "2023-03-02T03:31:47Z" + } +} diff --git a/Libraries/test/EventsTests.Shared/cloudwatchevents-translatetexttranslationjobstatechange.json b/Libraries/test/EventsTests.Shared/cloudwatchevents-translatetexttranslationjobstatechange.json new file mode 100644 index 000000000..ab062d7e6 --- /dev/null +++ b/Libraries/test/EventsTests.Shared/cloudwatchevents-translatetexttranslationjobstatechange.json @@ -0,0 +1,14 @@ +{ + "version": "0", + "id": "8882c5af-c9da-4a58-99e2-91fbe33b9e52", + "detail-type": "Translate TextTranslationJob State Change", + "source": "aws.translate", + "account": "111122223333", + "time": "2017-04-22T03:31:47Z", + "region": "us-east-1", + "resources": [], + "detail": { + "jobId": "8ce682a1-9be8-4f2c-875c-f8ae2fe1b015", + "jobStatus": "COMPLETED" + } +}