diff --git a/sdk/core/Azure.Core/api/Azure.Core.net461.cs b/sdk/core/Azure.Core/api/Azure.Core.net461.cs index bd6368f8acc7..8e516de709cb 100644 --- a/sdk/core/Azure.Core/api/Azure.Core.net461.cs +++ b/sdk/core/Azure.Core/api/Azure.Core.net461.cs @@ -582,13 +582,13 @@ public CloudEvent(string source, string type, object? jsonSerializableData, Syst public string? DataContentType { get { throw null; } set { } } public string? DataSchema { get { throw null; } set { } } public System.Collections.Generic.IDictionary ExtensionAttributes { get { throw null; } } - public string? Id { get { throw null; } set { } } - public string? Source { get { throw null; } set { } } + public string Id { get { throw null; } set { } } + public string Source { get { throw null; } set { } } public string? Subject { get { throw null; } set { } } public System.DateTimeOffset? Time { get { throw null; } set { } } - public string? Type { get { throw null; } set { } } - public static Azure.Messaging.CloudEvent? Parse(System.BinaryData jsonEvent, bool skipValidation = false) { throw null; } - public static Azure.Messaging.CloudEvent[] ParseEvents(string jsonContent, bool skipValidation = false) { throw null; } + public string Type { get { throw null; } set { } } + public static Azure.Messaging.CloudEvent? Parse(System.BinaryData json, bool skipValidation = false) { throw null; } + public static Azure.Messaging.CloudEvent[] ParseMany(System.BinaryData json, bool skipValidation = false) { throw null; } } public enum CloudEventDataFormat { diff --git a/sdk/core/Azure.Core/api/Azure.Core.net5.0.cs b/sdk/core/Azure.Core/api/Azure.Core.net5.0.cs index c5790f30903a..34ff70d3e3b0 100644 --- a/sdk/core/Azure.Core/api/Azure.Core.net5.0.cs +++ b/sdk/core/Azure.Core/api/Azure.Core.net5.0.cs @@ -582,13 +582,13 @@ public CloudEvent(string source, string type, object? jsonSerializableData, Syst public string? DataContentType { get { throw null; } set { } } public string? DataSchema { get { throw null; } set { } } public System.Collections.Generic.IDictionary ExtensionAttributes { get { throw null; } } - public string? Id { get { throw null; } set { } } - public string? Source { get { throw null; } set { } } + public string Id { get { throw null; } set { } } + public string Source { get { throw null; } set { } } public string? Subject { get { throw null; } set { } } public System.DateTimeOffset? Time { get { throw null; } set { } } - public string? Type { get { throw null; } set { } } - public static Azure.Messaging.CloudEvent? Parse(System.BinaryData jsonEvent, bool skipValidation = false) { throw null; } - public static Azure.Messaging.CloudEvent[] ParseEvents(string jsonContent, bool skipValidation = false) { throw null; } + public string Type { get { throw null; } set { } } + public static Azure.Messaging.CloudEvent? Parse(System.BinaryData json, bool skipValidation = false) { throw null; } + public static Azure.Messaging.CloudEvent[] ParseMany(System.BinaryData json, bool skipValidation = false) { throw null; } } public enum CloudEventDataFormat { diff --git a/sdk/core/Azure.Core/api/Azure.Core.netstandard2.0.cs b/sdk/core/Azure.Core/api/Azure.Core.netstandard2.0.cs index bd6368f8acc7..8e516de709cb 100644 --- a/sdk/core/Azure.Core/api/Azure.Core.netstandard2.0.cs +++ b/sdk/core/Azure.Core/api/Azure.Core.netstandard2.0.cs @@ -582,13 +582,13 @@ public CloudEvent(string source, string type, object? jsonSerializableData, Syst public string? DataContentType { get { throw null; } set { } } public string? DataSchema { get { throw null; } set { } } public System.Collections.Generic.IDictionary ExtensionAttributes { get { throw null; } } - public string? Id { get { throw null; } set { } } - public string? Source { get { throw null; } set { } } + public string Id { get { throw null; } set { } } + public string Source { get { throw null; } set { } } public string? Subject { get { throw null; } set { } } public System.DateTimeOffset? Time { get { throw null; } set { } } - public string? Type { get { throw null; } set { } } - public static Azure.Messaging.CloudEvent? Parse(System.BinaryData jsonEvent, bool skipValidation = false) { throw null; } - public static Azure.Messaging.CloudEvent[] ParseEvents(string jsonContent, bool skipValidation = false) { throw null; } + public string Type { get { throw null; } set { } } + public static Azure.Messaging.CloudEvent? Parse(System.BinaryData json, bool skipValidation = false) { throw null; } + public static Azure.Messaging.CloudEvent[] ParseMany(System.BinaryData json, bool skipValidation = false) { throw null; } } public enum CloudEventDataFormat { diff --git a/sdk/core/Azure.Core/src/Messaging/CloudEvent.cs b/sdk/core/Azure.Core/src/Messaging/CloudEvent.cs index b0dfd6bfb1f9..e9c9363ff49a 100644 --- a/sdk/core/Azure.Core/src/Messaging/CloudEvent.cs +++ b/sdk/core/Azure.Core/src/Messaging/CloudEvent.cs @@ -19,6 +19,9 @@ public class CloudEvent /// Event data specific to the event type. /// The type to use when serializing the data. /// If not specified, will be used on . + /// + /// or was null. + /// public CloudEvent(string source, string type, object? jsonSerializableData, Type? dataSerializationType = default) { if (jsonSerializableData is BinaryData) @@ -38,7 +41,11 @@ public CloudEvent(string source, string type, object? jsonSerializableData, Type /// Type of event related to the originating occurrence. For example, "Contoso.Items.ItemReceived". /// Binary event data specific to the event type. /// Content type of the payload. A content type different from "application/json" should be specified if payload is not JSON. - /// + /// The format that the data of a should be sent in + /// when using the JSON envelope format. + /// + /// or was null. + /// public CloudEvent(string source, string type, BinaryData? data, string? dataContentType, CloudEventDataFormat dataFormat = CloudEventDataFormat.Binary) { Source = source; @@ -62,11 +69,11 @@ internal CloudEvent() { } /// Gets or sets an identifier for the event. The combination of and must be unique for each distinct event. /// If not explicitly set, this will default to a . /// - public string? Id + public string Id { get { - return _id; + return _id!; } set { @@ -80,11 +87,11 @@ public string? Id /// Gets or sets the context in which an event happened. The combination of /// and must be unique for each distinct event. - public string? Source + public string Source { get { - return _source; + return _source!; } set { @@ -95,11 +102,11 @@ public string? Source private string? _source; /// Gets or sets the type of event related to the originating occurrence. - public string? Type + public string Type { get { - return _type; + return _type!; } set { @@ -142,19 +149,18 @@ public string? Type /// By default, if the event is missing required properties, an exception is thrown though this can be relaxed /// by setting the parameter. /// - /// The JSON-encoded representation of either a single event or an array or events, - /// in the CloudEvent schema. + /// An instance of containing the JSON for one or more CloudEvents. /// Set to to allow missing or invalid properties to still parse into a CloudEvent. /// In particular, by setting strict to , the source, id, specversion and type properties are no longer required /// to be present in the JSON. Additionally, the casing requirements of the extension attribute names are relaxed. /// - /// A list of . - public static CloudEvent[] ParseEvents(string jsonContent, bool skipValidation = false) + /// An array of instances. + public static CloudEvent[] ParseMany(BinaryData json, bool skipValidation = false) { - Argument.AssertNotNull(jsonContent, nameof(jsonContent)); + Argument.AssertNotNull(json, nameof(json)); CloudEvent[]? cloudEvents = null; - JsonDocument requestDocument = JsonDocument.Parse(jsonContent); + JsonDocument requestDocument = JsonDocument.Parse(json); // Parse JsonElement into separate events, deserialize event envelope properties if (requestDocument.RootElement.ValueKind == JsonValueKind.Object) @@ -180,30 +186,42 @@ public static CloudEvent[] ParseEvents(string jsonContent, bool skipValidation = /// By default, if the event is missing required properties, an exception is thrown though this can be relaxed /// by setting the parameter. /// - /// Specifies the instance of . + /// An instance of containing the JSON for the CloudEvent. /// Set to to allow missing or invalid properties to still parse into a CloudEvent. /// In particular, by setting strict to , the source, id, specversion and type properties are no longer required /// to be present in the JSON. Additionally, the casing requirements of the extension attribute names are relaxed. /// /// A . - public static CloudEvent? Parse(BinaryData jsonEvent, bool skipValidation = false) + /// + /// contained multiple events. should be used instead. + /// + public static CloudEvent? Parse(BinaryData json, bool skipValidation = false) { - Argument.AssertNotNull(jsonEvent, nameof(jsonEvent)); - CloudEvent[]? events = ParseEvents(jsonEvent.ToString(), skipValidation); - if (events.Length == 0) + Argument.AssertNotNull(json, nameof(json)); + + JsonDocument requestDocument = JsonDocument.Parse(json); + CloudEvent? cloudEvent = null; + if (requestDocument.RootElement.ValueKind == JsonValueKind.Object) { - return null; + cloudEvent = CloudEventConverter.DeserializeCloudEvent(requestDocument.RootElement, skipValidation); } - if (events.Length > 1) + else if (requestDocument.RootElement.ValueKind == JsonValueKind.Array) { - throw new ArgumentException( - "The BinaryData instance contains JSON from multiple cloud events. This method " + - "should only be used with BinaryData containing a single cloud event. " + - Environment.NewLine + - "To parse multiple events, call ToString on the BinaryData and use the " + - "Parse overload that takes a string."); + if (requestDocument.RootElement.GetArrayLength() > 1) + { + throw new ArgumentException( + "The BinaryData instance contains JSON from multiple cloud events. This method " + + "should only be used with BinaryData containing a single cloud event. " + + Environment.NewLine + + $"To parse multiple events, use the {nameof(ParseMany)} overload."); + } + foreach (JsonElement property in requestDocument.RootElement.EnumerateArray()) + { + cloudEvent = CloudEventConverter.DeserializeCloudEvent(property, skipValidation); + break; + } } - return events[0]; + return cloudEvent; } } } diff --git a/sdk/core/Azure.Core/tests/CloudEventTests.cs b/sdk/core/Azure.Core/tests/CloudEventTests.cs index 445a6691d9ff..2e6a726095e7 100644 --- a/sdk/core/Azure.Core/tests/CloudEventTests.cs +++ b/sdk/core/Azure.Core/tests/CloudEventTests.cs @@ -156,7 +156,7 @@ public void CanRoundTrip() }; var serializer = new JsonObjectSerializer(); BinaryData serialized = serializer.Serialize(cloudEvent); - CloudEvent deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + CloudEvent deserialized = CloudEvent.ParseMany(serialized)[0]; Assert.AreEqual("source", deserialized.Source); Assert.AreEqual("type", deserialized.Type); Assert.AreEqual(10, deserialized.Data.ToObjectFromJson().A); @@ -213,7 +213,7 @@ public void CanRoundTripDataArray() }; var serializer = new JsonObjectSerializer(); BinaryData serialized = serializer.Serialize(cloudEvent); - CloudEvent deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + CloudEvent deserialized = CloudEvent.ParseMany(serialized)[0]; Assert.AreEqual("source", deserialized.Source); Assert.AreEqual("type", deserialized.Type); var dataArray = deserialized.Data.ToObjectFromJson(); @@ -226,7 +226,7 @@ public void CanRoundTripDataArray() Assert.AreEqual("id", deserialized.Id); Assert.AreEqual(time, deserialized.Time); - deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + deserialized = CloudEvent.ParseMany(serialized)[0]; Assert.AreEqual("source", deserialized.Source); Assert.AreEqual("type", deserialized.Type); dataArray = deserialized.Data.ToObjectFromJson(); @@ -287,7 +287,7 @@ public void CanRoundTripModelWithCustomSerializer() }; var serializer = new JsonObjectSerializer(); BinaryData serialized = serializer.Serialize(cloudEvent); - CloudEvent deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + CloudEvent deserialized = CloudEvent.ParseMany(serialized)[0]; Assert.AreEqual("source", deserialized.Source); Assert.AreEqual("type", deserialized.Type); Assert.AreEqual(10, deserialized.Data.ToObject(dataSerializer).A); @@ -339,7 +339,7 @@ public void CanRoundTripString(string data) var serializer = new JsonObjectSerializer(); BinaryData serialized = serializer.Serialize(cloudEvent); - CloudEvent deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + CloudEvent deserialized = CloudEvent.ParseMany(serialized)[0]; Assert.AreEqual("source", deserialized.Source); Assert.AreEqual("type", deserialized.Type); Assert.AreEqual(data, deserialized.Data.ToObjectFromJson()); @@ -383,7 +383,7 @@ public void CanRoundTripNull() var serializer = new JsonObjectSerializer(); BinaryData serialized = serializer.Serialize(cloudEvent); - CloudEvent deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + CloudEvent deserialized = CloudEvent.ParseMany(serialized)[0]; Assert.IsNull(cloudEvent.Data.ToObjectFromJson()); AssertCloudEvent(); @@ -405,7 +405,7 @@ public void CanRoundTripNull() Assert.IsNull(cloudEvent.Data.ToObjectFromJson()); serialized = serializer.Serialize(cloudEvent); - deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + deserialized = CloudEvent.ParseMany(serialized)[0]; Assert.IsNull(cloudEvent.Data.ToObjectFromJson()); AssertCloudEvent(); @@ -427,7 +427,7 @@ public void CanRoundTripNull() Assert.IsNull(cloudEvent.Data); serialized = serializer.Serialize(cloudEvent); - deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + deserialized = CloudEvent.ParseMany(serialized)[0]; Assert.IsNull(cloudEvent.Data); AssertCloudEvent(); @@ -465,7 +465,7 @@ public void CanRoundTripBool() var serializer = new JsonObjectSerializer(); BinaryData serialized = serializer.Serialize(cloudEvent); - CloudEvent deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + CloudEvent deserialized = CloudEvent.ParseMany(serialized)[0]; AssertCloudEvent(); deserialized = (CloudEvent)serializer.Deserialize(serialized.ToStream(), typeof(CloudEvent), CancellationToken.None); @@ -484,7 +484,7 @@ public void CanRoundTripBool() Assert.IsTrue(cloudEvent.Data.ToObjectFromJson()); serialized = serializer.Serialize(cloudEvent); - deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + deserialized = CloudEvent.ParseMany(serialized)[0]; AssertCloudEvent(); deserialized = (CloudEvent)serializer.Deserialize(serialized.ToStream(), typeof(CloudEvent), CancellationToken.None); @@ -520,7 +520,7 @@ public void CanRoundTripNumber() var serializer = new JsonObjectSerializer(); BinaryData serialized = serializer.Serialize(cloudEvent); - CloudEvent deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + CloudEvent deserialized = CloudEvent.ParseMany(serialized)[0]; AssertCloudEvent(); deserialized = (CloudEvent)serializer.Deserialize(serialized.ToStream(), typeof(CloudEvent), CancellationToken.None); @@ -539,7 +539,7 @@ public void CanRoundTripNumber() Assert.AreEqual(5, cloudEvent.Data.ToObjectFromJson()); serialized = serializer.Serialize(cloudEvent); - deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + deserialized = CloudEvent.ParseMany(serialized)[0]; AssertCloudEvent(); deserialized = (CloudEvent)serializer.Deserialize(serialized.ToStream(), typeof(CloudEvent), CancellationToken.None); @@ -574,7 +574,7 @@ public void CanRoundTripBytes() }; var serializer = new JsonObjectSerializer(); BinaryData serialized = serializer.Serialize(cloudEvent); - CloudEvent deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + CloudEvent deserialized = CloudEvent.ParseMany(serialized)[0]; Assert.AreEqual("source", deserialized.Source); Assert.AreEqual("type", deserialized.Type); Assert.AreEqual(data, deserialized.Data.ToArray()); @@ -600,7 +600,7 @@ public void CanRoundTripStream() }; var serializer = new JsonObjectSerializer(); BinaryData serialized = serializer.Serialize(cloudEvent); - CloudEvent deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + CloudEvent deserialized = CloudEvent.ParseMany(serialized)[0]; Assert.AreEqual("source", deserialized.Source); Assert.AreEqual("type", deserialized.Type); Assert.AreEqual(data, deserialized.Data.ToArray()); @@ -634,7 +634,7 @@ public void CanRoundTripWithCustomDataSerializer() var serializer = new JsonObjectSerializer(); BinaryData serialized = serializer.Serialize(cloudEvent); - CloudEvent deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + CloudEvent deserialized = CloudEvent.ParseMany(serialized)[0]; Assert.AreEqual("source", deserialized.Source); Assert.AreEqual("type", deserialized.Type); Assert.AreEqual(10, deserialized.Data.ToObject(dataSerializer).A); @@ -656,7 +656,7 @@ public void CanRoundTripWithDefaultDataSerializer() }); BinaryData serialized = serializer.Serialize(cloudEvent); - CloudEvent deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + CloudEvent deserialized = CloudEvent.ParseMany(serialized)[0]; Assert.AreEqual("source", deserialized.Source); Assert.AreEqual("type", deserialized.Type); Assert.AreEqual(10, deserialized.Data.ToObjectFromJson().A); @@ -682,7 +682,7 @@ public void CanRoundTripDerivedType() }; var serializer = new JsonObjectSerializer(); BinaryData serialized = serializer.Serialize(cloudEvent); - CloudEvent deserialized = CloudEvent.ParseEvents(serialized.ToString())[0]; + CloudEvent deserialized = CloudEvent.ParseMany(serialized)[0]; Assert.AreEqual("source", deserialized.Source); Assert.AreEqual("type", deserialized.Type); Assert.AreEqual(10, deserialized.Data.ToObjectFromJson().A); @@ -704,10 +704,10 @@ public void CanRoundTripDerivedType() [Test] public void CloudEventParseThrowsOnNullInput() { - Assert.That(() => CloudEvent.ParseEvents((string)null), + Assert.That(() => CloudEvent.ParseMany(null), Throws.InstanceOf()); - Assert.That(() => CloudEvent.Parse((BinaryData)null), + Assert.That(() => CloudEvent.Parse(null), Throws.InstanceOf()); } @@ -726,17 +726,17 @@ public void ParseBinaryDataThrowsOnMultipleCloudEvents() public void CanParseMultipleMissingRequired(bool skipValidation) { // missing Id, Source, SpecVersion - string requestContent = "[{ \"subject\": \"Subject-0\", \"data\": { \"itemSku\": \"512d38b6-c7b8-40c8-89fe-f46f9e9622b6\", \"itemUri\": \"https://rp-eastus2.eventgrid.azure.net:553/eventsubscriptions/estest/validate?id=B2E34264-7D71-453A-B5FB-B62D0FDC85EE&t=2018-04-26T20:30:54.4538837Z&apiVersion=2018-05-01-preview&token=1BNqCxBBSSE9OnNSfZM4%2b5H9zDegKMY6uJ%2fO2DFRkwQ%3d\" }}, { \"subject\": \"Subject-0\", \"data\": { \"itemSku\": \"512d38b6-c7b8-40c8-89fe-f46f9e9622b6\", \"itemUri\": \"https://rp-eastus2.eventgrid.azure.net:553/eventsubscriptions/estest/validate?id=B2E34264-7D71-453A-B5FB-B62D0FDC85EE&t=2018-04-26T20:30:54.4538837Z&apiVersion=2018-05-01-preview&token=1BNqCxBBSSE9OnNSfZM4%2b5H9zDegKMY6uJ%2fO2DFRkwQ%3d\" }}]"; + BinaryData requestContent = new BinaryData("[{ \"subject\": \"Subject-0\", \"data\": { \"itemSku\": \"512d38b6-c7b8-40c8-89fe-f46f9e9622b6\", \"itemUri\": \"https://rp-eastus2.eventgrid.azure.net:553/eventsubscriptions/estest/validate?id=B2E34264-7D71-453A-B5FB-B62D0FDC85EE&t=2018-04-26T20:30:54.4538837Z&apiVersion=2018-05-01-preview&token=1BNqCxBBSSE9OnNSfZM4%2b5H9zDegKMY6uJ%2fO2DFRkwQ%3d\" }}, { \"subject\": \"Subject-0\", \"data\": { \"itemSku\": \"512d38b6-c7b8-40c8-89fe-f46f9e9622b6\", \"itemUri\": \"https://rp-eastus2.eventgrid.azure.net:553/eventsubscriptions/estest/validate?id=B2E34264-7D71-453A-B5FB-B62D0FDC85EE&t=2018-04-26T20:30:54.4538837Z&apiVersion=2018-05-01-preview&token=1BNqCxBBSSE9OnNSfZM4%2b5H9zDegKMY6uJ%2fO2DFRkwQ%3d\" }}]"); if (!skipValidation) { Assert.That( - () => CloudEvent.ParseEvents(requestContent, skipValidation), + () => CloudEvent.ParseMany(requestContent, skipValidation), Throws.InstanceOf()); } else { - CloudEvent[] events = CloudEvent.ParseEvents(requestContent, skipValidation); + CloudEvent[] events = CloudEvent.ParseMany(requestContent, skipValidation); foreach (CloudEvent cloudEvent in events) { Assert.IsNull(cloudEvent.Id); @@ -908,17 +908,17 @@ public void CanParseMissingId(bool skipValidation) public void CanParseInvalidAttributes(bool skipValidation) { // improperly cased extension can still be deserialized. - var json = "{\"subject\": \"Subject-0\", \"source\":\"source\", \"specversion\":\"1.0\", \"id\": \"id\", \"type\": \"type\", \"KEY\":\"value\", \"dict\": { \"key1\":true, \"key2\": 5 } }"; + var json = new BinaryData("{\"subject\": \"Subject-0\", \"source\":\"source\", \"specversion\":\"1.0\", \"id\": \"id\", \"type\": \"type\", \"KEY\":\"value\", \"dict\": { \"key1\":true, \"key2\": 5 } }"); if (!skipValidation) { Assert.That( - () => CloudEvent.ParseEvents(json), + () => CloudEvent.ParseMany(json), Throws.InstanceOf()); } else { - var evt = CloudEvent.ParseEvents(json, true)[0]; + var evt = CloudEvent.ParseMany(json, true)[0]; Assert.AreEqual("Subject-0", evt.Subject); Assert.AreEqual("type", evt.Type); Assert.AreEqual("value", evt.ExtensionAttributes["KEY"]); diff --git a/sdk/eventgrid/Azure.Messaging.EventGrid/README.md b/sdk/eventgrid/Azure.Messaging.EventGrid/README.md index f84574a8a980..200ee7753cec 100644 --- a/sdk/eventgrid/Azure.Messaging.EventGrid/README.md +++ b/sdk/eventgrid/Azure.Messaging.EventGrid/README.md @@ -193,14 +193,14 @@ Once events are delivered to the event handler, parse the JSON payload into list Using `EventGridEvent`: ```C# Snippet:EGEventParseJson -// Parse the JSON payload into a list of events using EventGridEvent.Parse -EventGridEvent[] egEvents = EventGridEvent.ParseEvents(jsonPayloadSampleOne); +// Parse the JSON payload into a list of events +EventGridEvent[] egEvents = EventGridEvent.ParseMany(jsonPayloadSampleOne); ``` Using `CloudEvent`: ```C# Snippet:CloudEventParseJson -// Parse the JSON payload into a list of events using CloudEvent.Parse -CloudEvent[] cloudEvents = CloudEvent.ParseEvents(jsonPayloadSampleTwo); +// Parse the JSON payload into a list of events +CloudEvent[] cloudEvents = CloudEvent.ParseMany(jsonPayloadSampleTwo); ``` From here, one can access the event data by deserializing to a specific type using `GetData()`. Calling `GetData()` will either return the event data wrapped in `BinaryData`, which represents the serialized JSON event data as bytes. @@ -241,7 +241,7 @@ If expecting mostly system events, it may be cleaner to switch on `TryGetSystemE ```C# Snippet:DeserializePayloadUsingAsSystemEventData foreach (EventGridEvent egEvent in egEvents) { - // If the event is a system event, TryGetSystemEventData() will return the deserialized system event + // If the event is a system event, TryGetSystemEventData will return the deserialized system event if (egEvent.TryGetSystemEventData(out object systemEvent)) { switch (systemEvent) diff --git a/sdk/eventgrid/Azure.Messaging.EventGrid/api/Azure.Messaging.EventGrid.netstandard2.0.cs b/sdk/eventgrid/Azure.Messaging.EventGrid/api/Azure.Messaging.EventGrid.netstandard2.0.cs index 2245927078f2..8ca7ba0d4d09 100644 --- a/sdk/eventgrid/Azure.Messaging.EventGrid/api/Azure.Messaging.EventGrid.netstandard2.0.cs +++ b/sdk/eventgrid/Azure.Messaging.EventGrid/api/Azure.Messaging.EventGrid.netstandard2.0.cs @@ -11,8 +11,8 @@ public EventGridEvent(string subject, string eventType, string dataVersion, obje public string Id { get { throw null; } set { } } public string Subject { get { throw null; } set { } } public string Topic { get { throw null; } set { } } - public static Azure.Messaging.EventGrid.EventGridEvent Parse(System.BinaryData jsonEvent) { throw null; } - public static Azure.Messaging.EventGrid.EventGridEvent[] ParseEvents(string requestContent) { throw null; } + public static Azure.Messaging.EventGrid.EventGridEvent Parse(System.BinaryData json) { throw null; } + public static Azure.Messaging.EventGrid.EventGridEvent[] ParseMany(System.BinaryData json) { throw null; } public bool TryGetSystemEventData(out object eventData) { throw null; } } public static partial class EventGridExtensions diff --git a/sdk/eventgrid/Azure.Messaging.EventGrid/samples/Sample3_ParseAndDeserializeEvents.md b/sdk/eventgrid/Azure.Messaging.EventGrid/samples/Sample3_ParseAndDeserializeEvents.md index 6e8e4e9f8c92..56ad01cbb4f4 100644 --- a/sdk/eventgrid/Azure.Messaging.EventGrid/samples/Sample3_ParseAndDeserializeEvents.md +++ b/sdk/eventgrid/Azure.Messaging.EventGrid/samples/Sample3_ParseAndDeserializeEvents.md @@ -13,14 +13,14 @@ Once events are delivered to the event handler, parse the JSON payload into list Using `EventGridEvent`: ```C# Snippet:EGEventParseJson -// Parse the JSON payload into a list of events using EventGridEvent.Parse -EventGridEvent[] egEvents = EventGridEvent.ParseEvents(jsonPayloadSampleOne); +// Parse the JSON payload into a list of events +EventGridEvent[] egEvents = EventGridEvent.ParseMany(jsonPayloadSampleOne); ``` Using `CloudEvent`: ```C# Snippet:CloudEventParseJson -// Parse the JSON payload into a list of events using CloudEvent.Parse -CloudEvent[] cloudEvents = CloudEvent.ParseEvents(jsonPayloadSampleTwo); +// Parse the JSON payload into a list of events +CloudEvent[] cloudEvents = CloudEvent.ParseMany(jsonPayloadSampleTwo); ``` ## Deserialize Event Data @@ -60,7 +60,7 @@ If expecting mostly system events, it may be cleaner to switch on `TryGetSystemE ```C# Snippet:DeserializePayloadUsingAsSystemEventData foreach (EventGridEvent egEvent in egEvents) { - // If the event is a system event, TryGetSystemEventData() will return the deserialized system event + // If the event is a system event, TryGetSystemEventData will return the deserialized system event if (egEvent.TryGetSystemEventData(out object systemEvent)) { switch (systemEvent) diff --git a/sdk/eventgrid/Azure.Messaging.EventGrid/src/Customization/EventGridEvent.cs b/sdk/eventgrid/Azure.Messaging.EventGrid/src/Customization/EventGridEvent.cs index 44d66f00b37f..c8db2dbd925c 100644 --- a/sdk/eventgrid/Azure.Messaging.EventGrid/src/Customization/EventGridEvent.cs +++ b/sdk/eventgrid/Azure.Messaging.EventGrid/src/Customization/EventGridEvent.cs @@ -18,6 +18,9 @@ public class EventGridEvent /// Event data specific to the event type. /// The type to use when serializing the data. /// If not specified, will be used on . + /// + /// , , , or was null. + /// public EventGridEvent(string subject, string eventType, string dataVersion, object data, Type dataSerializationType = default) { Argument.AssertNotNull(subject, nameof(subject)); @@ -41,6 +44,9 @@ public EventGridEvent(string subject, string eventType, string dataVersion, obje /// The type of the event that occurred. For example, "Contoso.Items.ItemReceived". /// The schema version of the data object. /// Event data specific to the event type. + /// + /// , , , or was null. + /// public EventGridEvent(string subject, string eventType, string dataVersion, BinaryData data) { Argument.AssertNotNull(subject, nameof(subject)); @@ -123,15 +129,14 @@ public bool TryGetSystemEventData(out object eventData) /// Given JSON-encoded events, parses the event envelope and returns an array of EventGridEvents. /// If the content is not valid JSON, or events are missing required properties, an exception is thrown. /// - /// The JSON-encoded representation of either a single event or an array or events, - /// encoded in the EventGridEvent schema. - /// A list of . - public static EventGridEvent[] ParseEvents(string requestContent) + /// An instance of containing the JSON for one or more EventGridEvents. + /// An array of instances. + public static EventGridEvent[] ParseMany(BinaryData json) { - Argument.AssertNotNull(requestContent, nameof(requestContent)); + Argument.AssertNotNull(json, nameof(json)); EventGridEvent[] egEvents = null; - JsonDocument requestDocument = JsonDocument.Parse(requestContent); + JsonDocument requestDocument = JsonDocument.Parse(json); // Parse JsonElement into separate events, deserialize event envelope properties if (requestDocument.RootElement.ValueKind == JsonValueKind.Object) @@ -155,13 +160,15 @@ public static EventGridEvent[] ParseEvents(string requestContent) /// Given a single JSON-encoded event, parses the event envelope and returns an EventGridEvent. /// If the specified event is not valid JSON, or the event is missing required properties, an exception is thrown. /// - /// Specifies the instance of containing the JSON for an - /// . + /// An instance of containing the JSON for the EventGridEvent. /// An . - public static EventGridEvent Parse(BinaryData jsonEvent) + /// + /// contained multiple events. should be used instead. + /// + public static EventGridEvent Parse(BinaryData json) { - Argument.AssertNotNull(jsonEvent, nameof(jsonEvent)); - EventGridEvent[] events = ParseEvents(jsonEvent.ToString()); + Argument.AssertNotNull(json, nameof(json)); + EventGridEvent[] events = ParseMany(json); if (events.Length == 0) { return null; @@ -172,8 +179,7 @@ public static EventGridEvent Parse(BinaryData jsonEvent) "The BinaryData instance contains JSON from multiple event grid events. This method " + "should only be used with BinaryData containing a single event grid event. " + Environment.NewLine + - "To parse multiple events, call ToString on the BinaryData and use the " + - "Parse overload that takes a string."); + $"To parse multiple events, use the {nameof(ParseMany)} overload."); } return events[0]; } diff --git a/sdk/eventgrid/Azure.Messaging.EventGrid/tests/ConsumeEventTests.cs b/sdk/eventgrid/Azure.Messaging.EventGrid/tests/ConsumeEventTests.cs index 51360d1fda81..ab4c78192cc3 100644 --- a/sdk/eventgrid/Azure.Messaging.EventGrid/tests/ConsumeEventTests.cs +++ b/sdk/eventgrid/Azure.Messaging.EventGrid/tests/ConsumeEventTests.cs @@ -21,7 +21,7 @@ public void ParsesEventGridEnvelope() { string requestContent = "[{ \"id\": \"2d1781af-3a4c-4d7c-bd0c-e34b19da4e66\", \"topic\": \"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", \"subject\": \"mySubject\", \"data\": { \"validationCode\": \"512d38b6-c7b8-40c8-89fe-f46f9e9622b6\", \"validationUrl\": \"https://rp-eastus2.eventgrid.azure.net:553/eventsubscriptions/estest/validate?id=B2E34264-7D71-453A-B5FB-B62D0FDC85EE&t=2018-04-26T20:30:54.4538837Z&apiVersion=2018-05-01-preview&token=1BNqCxBBSSE9OnNSfZM4%2b5H9zDegKMY6uJ%2fO2DFRkwQ%3d\" }, \"eventType\": \"Microsoft.EventGrid.SubscriptionValidationEvent\", \"eventTime\": \"2018-01-25T22:12:19.4556811Z\", \"metadataVersion\": \"1\", \"dataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); var egEvent = events[0]; Assert.AreEqual("/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", egEvent.Topic); Assert.AreEqual("2d1781af-3a4c-4d7c-bd0c-e34b19da4e66", egEvent.Id); @@ -36,7 +36,7 @@ public void ConsumeStorageBlobDeletedEventWithExtraProperty() { string requestContent = "[{ \"topic\": \"/subscriptions/id/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testfile.txt\", \"eventType\": \"Microsoft.Storage.BlobDeleted\", \"eventTime\": \"2017-11-07T20:09:22.5674003Z\", \"id\": \"4c2359fe-001e-00ba-0e04-58586806d298\", \"data\": { \"api\": \"DeleteBlob\", \"requestId\": \"4c2359fe-001e-00ba-0e04-585868000000\", \"contentType\": \"text/plain\", \"blobType\": \"BlockBlob\", \"url\": \"https://example.blob.core.windows.net/testcontainer/testfile.txt\", \"sequencer\": \"0000000000000281000000000002F5CA\", \"brandNewProperty\": \"0000000000000281000000000002F5CA\", \"storageDiagnostics\": { \"batchId\": \"b68529f3-68cd-4744-baa4-3c0498ec19f0\" } }, \"dataVersion\": \"\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); foreach (EventGridEvent egEvent in events) @@ -57,7 +57,7 @@ public void ConsumeEventNotWrappedInAnArray() { string requestContent = "{ \"topic\": \"/subscriptions/id/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testfile.txt\", \"eventType\": \"Microsoft.Storage.BlobDeleted\", \"eventTime\": \"2017-11-07T20:09:22.5674003Z\", \"id\": \"4c2359fe-001e-00ba-0e04-58586806d298\", \"data\": { \"api\": \"DeleteBlob\", \"requestId\": \"4c2359fe-001e-00ba-0e04-585868000000\", \"contentType\": \"text/plain\", \"blobType\": \"BlockBlob\", \"url\": \"https://example.blob.core.windows.net/testcontainer/testfile.txt\", \"sequencer\": \"0000000000000281000000000002F5CA\", \"brandNewProperty\": \"0000000000000281000000000002F5CA\", \"storageDiagnostics\": { \"batchId\": \"b68529f3-68cd-4744-baa4-3c0498ec19f0\" } }, \"dataVersion\": \"\", \"metadataVersion\": \"1\"}"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); foreach (EventGridEvent egEvent in events) @@ -80,7 +80,7 @@ public void ConsumeMultipleEventsInSameBatch() "{ \"topic\": \"/subscriptions/id/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testfile.txt\", \"eventType\": \"Microsoft.Storage.BlobDeleted\", \"eventTime\": \"2017-11-07T20:09:22.5674003Z\", \"id\": \"4c2359fe-001e-00ba-0e04-58586806d298\", \"data\": { \"api\": \"DeleteBlob\", \"requestId\": \"4c2359fe-001e-00ba-0e04-585868000000\", \"contentType\": \"text/plain\", \"blobType\": \"BlockBlob\", \"url\": \"https://example.blob.core.windows.net/testcontainer/testfile.txt\", \"sequencer\": \"0000000000000281000000000002F5CA\", \"storageDiagnostics\": { \"batchId\": \"b68529f3-68cd-4744-baa4-3c0498ec19f0\" } }, \"dataVersion\": \"\", \"metadataVersion\": \"1\"}, " + "{ \"topic\": \"/subscriptions/id/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testfile.txt\", \"eventType\": \"Microsoft.Storage.BlobDeleted\", \"eventTime\": \"2017-11-07T20:09:22.5674003Z\", \"id\": \"4c2359fe-001e-00ba-0e04-58586806d298\", \"data\": { \"api\": \"DeleteBlob\", \"requestId\": \"4c2359fe-001e-00ba-0e04-585868000000\", \"contentType\": \"text/plain\", \"blobType\": \"BlockBlob\", \"url\": \"https://example.blob.core.windows.net/testcontainer/testfile.txt\", \"sequencer\": \"0000000000000281000000000002F5CA\", \"storageDiagnostics\": { \"batchId\": \"b68529f3-68cd-4744-baa4-3c0498ec19f0\" } }, \"dataVersion\": \"\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.AreEqual(3, events.Length); @@ -123,17 +123,17 @@ public void EGEventParseThrowsIfMissingRequiredProperties() // missing Id and dataVersion string requestContent = "[{ \"subject\": \"\", \"data\": { \"itemSku\": \"512d38b6-c7b8-40c8-89fe-f46f9e9622b6\", \"itemUri\": \"https://rp-eastus2.eventgrid.azure.net:553/eventsubscriptions/estest/validate?id=B2E34264-7D71-453A-B5FB-B62D0FDC85EE&t=2018-04-26T20:30:54.4538837Z&apiVersion=2018-05-01-preview&token=1BNqCxBBSSE9OnNSfZM4%2b5H9zDegKMY6uJ%2fO2DFRkwQ%3d\" }, \"eventType\": \"Contoso.Items.ItemReceived\", \"eventTime\": \"2018-01-25T22:12:19.4556811Z\", \"metadataVersion\": \"1\"}]"; - Assert.That(() => EventGridEvent.ParseEvents(requestContent), + Assert.That(() => EventGridEvent.ParseMany(new BinaryData(requestContent)), Throws.InstanceOf()); } [Test] public void EGEventParseThrowsOnNullInput() { - Assert.That(() => EventGridEvent.ParseEvents((string)null), + Assert.That(() => EventGridEvent.ParseMany(null), Throws.InstanceOf()); - Assert.That(() => EventGridEvent.Parse((BinaryData)null), + Assert.That(() => EventGridEvent.Parse(null), Throws.InstanceOf()); } @@ -153,7 +153,7 @@ public void ConsumeCustomEvents() { string requestContent = "[{ \"id\": \"2d1781af-3a4c-4d7c-bd0c-e34b19da4e66\", \"topic\": \"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", \"subject\": \"\", \"data\": { \"itemSku\": \"512d38b6-c7b8-40c8-89fe-f46f9e9622b6\", \"itemUri\": \"https://rp-eastus2.eventgrid.azure.net:553/eventsubscriptions/estest/validate?id=B2E34264-7D71-453A-B5FB-B62D0FDC85EE&t=2018-04-26T20:30:54.4538837Z&apiVersion=2018-05-01-preview&token=1BNqCxBBSSE9OnNSfZM4%2b5H9zDegKMY6uJ%2fO2DFRkwQ%3d\" }, \"eventType\": \"Contoso.Items.ItemReceived\", \"eventTime\": \"2018-01-25T22:12:19.4556811Z\", \"metadataVersion\": \"1\", \"dataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); @@ -176,7 +176,7 @@ public void ConsumeCustomEventWithArrayData() { string requestContent = "[{ \"id\": \"2d1781af-3a4c-4d7c-bd0c-e34b19da4e66\", \"topic\": \"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", \"subject\": \"\", \"data\": [{ \"itemSku\": \"512d38b6-c7b8-40c8-89fe-f46f9e9622b6\", \"itemUri\": \"https://rp-eastus2.eventgrid.azure.net:553\" }], \"eventType\": \"Contoso.Items.ItemReceived\", \"eventTime\": \"2018-01-25T22:12:19.4556811Z\", \"metadataVersion\": \"1\", \"dataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); @@ -201,7 +201,7 @@ public void ConsumeCustomEventWithBooleanData() { string requestContent = "[{ \"id\": \"2d1781af-3a4c-4d7c-bd0c-e34b19da4e66\", \"topic\": \"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", \"subject\": \"\", \"data\": true, \"eventType\": \"Contoso.Items.ItemReceived\", \"eventTime\": \"2018-01-25T22:12:19.4556811Z\", \"metadataVersion\": \"1\", \"dataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); @@ -220,7 +220,7 @@ public void ConsumeCustomEventWithStringData() { string requestContent = "[{ \"id\": \"2d1781af-3a4c-4d7c-bd0c-e34b19da4e66\", \"topic\": \"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", \"subject\": \"\", \"data\": \"stringdata\", \"eventType\": \"Contoso.Items.ItemReceived\", \"eventTime\": \"2018-01-25T22:12:19.4556811Z\", \"metadataVersion\": \"1\", \"dataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); @@ -240,7 +240,7 @@ public void ConsumeCustomEventWithStringData() public void ConsumeAppConfigurationKeyValueDeletedEvent() { string requestContent = "[{ \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"topic\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.Maps/test1\", \"subject\": \"test1\", \"eventType\": \"Microsoft.AppConfiguration.KeyValueDeleted\",\"eventTime\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"key\":\"key1\",\"label\":\"label1\",\"etag\":\"etag1\"}, \"dataVersion\": \"\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -251,7 +251,7 @@ public void ConsumeAppConfigurationKeyValueDeletedEvent() public void ConsumeAppConfigurationKeyValueModifiedEvent() { string requestContent = "[{ \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"topic\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.Maps/test1\", \"subject\": \"test1\", \"eventType\": \"Microsoft.AppConfiguration.KeyValueModified\",\"eventTime\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"key\":\"key1\",\"label\":\"label1\",\"etag\":\"etag1\"}, \"dataVersion\": \"\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -265,7 +265,7 @@ public void ConsumeContainerRegistryImagePushedEvent() { string requestContent = "[{ \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"topic\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.ContainerRegistry/test1\", \"subject\": \"test1\", \"eventType\": \"Microsoft.ContainerRegistry.ImagePushed\", \"eventTime\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"id\":\"eventID\",\"timestamp\":\"2018-06-20T12:00:33.6125843-07:00\",\"action\":\"testaction\",\"target\":{\"mediaType\":\"test\",\"size\":20,\"digest\":\"digest1\",\"length\":20,\"repository\":\"test\",\"url\":\"url1\",\"tag\":\"test\"},\"request\":{\"id\":\"id\",\"addr\":\"127.0.0.1\",\"host\":\"test\",\"method\":\"method1\",\"useragent\":\"useragent1\"},\"actor\":{\"name\":\"testactor\"},\"source\":{\"addr\":\"127.0.0.1\",\"instanceID\":\"id\"}}, \"dataVersion\": \"\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -277,7 +277,7 @@ public void ConsumeContainerRegistryImageDeletedEvent() { string requestContent = "[{ \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"topic\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.ContainerRegistry/test1\", \"subject\": \"test1\", \"eventType\": \"Microsoft.ContainerRegistry.ImageDeleted\", \"eventTime\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"id\":\"eventID\",\"timestamp\":\"2018-06-20T12:00:33.6125843-07:00\",\"action\":\"testaction\",\"target\":{\"mediaType\":\"test\",\"size\":20,\"digest\":\"digest1\",\"length\":20,\"repository\":\"test\",\"url\":\"url1\",\"tag\":\"test\"},\"request\":{\"id\":\"id\",\"addr\":\"127.0.0.1\",\"host\":\"test\",\"method\":\"method1\",\"useragent\":\"useragent1\"},\"actor\":{\"name\":\"testactor\"},\"source\":{\"addr\":\"127.0.0.1\",\"instanceID\":\"id\"}}, \"dataVersion\": \"\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -289,7 +289,7 @@ public void ConsumeContainerRegistryChartDeletedEvent() { string requestContent = "[{ \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"topic\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.ContainerRegistry/test1\", \"subject\": \"test1\", \"eventType\": \"Microsoft.ContainerRegistry.ChartDeleted\", \"eventTime\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"id\":\"id\",\"timestamp\":\"2018-06-20T12:00:33.6125843-07:00\",\"action\":\"action1\",\"target\":{\"mediaType\":\"mediatype1\",\"size\":20,\"digest\":\"digest1\",\"repository\":null,\"tag\":null,\"name\":\"name1\",\"version\":null}}, \"dataVersion\":\"\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -301,7 +301,7 @@ public void ConsumeContainerRegistryChartPushedEvent() { string requestContent = "[{ \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"topic\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.ContainerRegistry/test1\", \"subject\": \"test1\", \"eventType\": \"Microsoft.ContainerRegistry.ChartPushed\", \"eventTime\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"id\":\"id\",\"timestamp\":\"2018-06-20T12:00:33.6125843-07:00\",\"action\":\"action1\",\"target\":{\"mediaType\":\"mediatype1\",\"size\":40,\"digest\":\"digest1\",\"repository\":null,\"tag\":null,\"name\":\"name1\",\"version\":null}}, \"dataVersion\":\"\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -315,7 +315,7 @@ public void ConsumeIoTHubDeviceCreatedEvent() { string requestContent = "[{ \"id\": \"2da5e9b4-4e38-04c1-cc58-9da0b37230c0\", \"topic\": \"/SUBSCRIPTIONS/BDF55CDD-8DAB-4CF4-9B2F-C21E8A780472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/EGTESTHUB1\", \"subject\": \"devices/48e44e11-1437-4907-83b1-4a8d7e89859e\", \"eventType\": \"Microsoft.Devices.DeviceCreated\", \"eventTime\": \"2018-07-03T23:20:07.6532054Z\", \"data\": { \"twin\": { \"deviceId\": \"48e44e11-1437-4907-83b1-4a8d7e89859e\", \"etag\": \"AAAAAAAAAAE=\", \"deviceEtag\": null, \"status\": \"enabled\", \"statusUpdateTime\": \"0001-01-01T00:00:00\", \"connectionState\": \"Disconnected\", \"lastActivityTime\": \"0001-01-01T00:00:00\", \"cloudToDeviceMessageCount\": 0, \"authenticationType\": \"sas\", \"x509Thumbprint\": { \"primaryThumbprint\": null, \"secondaryThumbprint\": null }, \"version\": 2, \"properties\": { \"desired\": { \"$metadata\": { \"$lastUpdated\": \"2018-07-03T23:20:07.6532054Z\" }, \"$version\": 1 }, \"reported\": { \"$metadata\": { \"$lastUpdated\": \"2018-07-03T23:20:07.6532054Z\" }, \"$version\": 1 } } }, \"hubName\": \"EGTESTHUB1\", \"deviceId\": \"48e44e11-1437-4907-83b1-4a8d7e89859e\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -327,7 +327,7 @@ public void ConsumeIoTHubDeviceDeletedEvent() { string requestContent = "[ { \"id\": \"aaaf95c6-ed99-b307-e321-81d8e4f731a6\", \"topic\": \"/SUBSCRIPTIONS/BDF55CDD-8DAB-4CF4-9B2F-C21E8A780472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/EGTESTHUB1\", \"subject\": \"devices/48e44e11-1437-4907-83b1-4a8d7e89859e\", \"eventType\": \"Microsoft.Devices.DeviceDeleted\", \"eventTime\": \"2018-07-03T23:21:33.2753956Z\", \"data\": { \"twin\": { \"deviceId\": \"48e44e11-1437-4907-83b1-4a8d7e89859e\", \"etag\": \"AAAAAAAAAAI=\", \"deviceEtag\": null, \"status\": \"enabled\", \"statusUpdateTime\": \"0001-01-01T00:00:00\", \"connectionState\": \"Disconnected\", \"lastActivityTime\": \"0001-01-01T00:00:00\", \"cloudToDeviceMessageCount\": 0, \"authenticationType\": \"sas\", \"x509Thumbprint\": { \"primaryThumbprint\": null, \"secondaryThumbprint\": null }, \"version\": 3, \"tags\": { \"testKey\": \"testValue\" }, \"properties\": { \"desired\": { \"$metadata\": { \"$lastUpdated\": \"2018-07-03T23:20:07.6532054Z\" }, \"$version\": 1 }, \"reported\": { \"$metadata\": { \"$lastUpdated\": \"2018-07-03T23:20:07.6532054Z\" }, \"$version\": 1 } } }, \"hubName\": \"EGTESTHUB1\", \"deviceId\": \"48e44e11-1437-4907-83b1-4a8d7e89859e\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -339,7 +339,7 @@ public void ConsumeIoTHubDeviceConnectedEvent() { string requestContent = "[ { \"id\": \"fbfd8ee1-cf78-74c6-dbcf-e1c58638ccbd\", \"topic\": \"/SUBSCRIPTIONS/BDF55CDD-8DAB-4CF4-9B2F-C21E8A780472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/EGTESTHUB1\", \"subject\": \"devices/48e44e11-1437-4907-83b1-4a8d7e89859e\", \"eventType\": \"Microsoft.Devices.DeviceConnected\", \"eventTime\": \"2018-07-03T23:20:11.6921933+00:00\", \"data\": { \"deviceConnectionStateEventInfo\": { \"sequenceNumber\": \"000000000000000001D4132452F67CE200000002000000000000000000000001\" }, \"hubName\": \"EGTESTHUB1\", \"deviceId\": \"48e44e11-1437-4907-83b1-4a8d7e89859e\", \"moduleId\": \"\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -351,7 +351,7 @@ public void ConsumeIoTHubDeviceDisconnectedEvent() { string requestContent = "[ { \"id\": \"877f0b10-a086-98ec-27b8-6ae2dfbf5f67\", \"topic\": \"/SUBSCRIPTIONS/BDF55CDD-8DAB-4CF4-9B2F-C21E8A780472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/EGTESTHUB1\", \"subject\": \"devices/48e44e11-1437-4907-83b1-4a8d7e89859e\", \"eventType\": \"Microsoft.Devices.DeviceDisconnected\", \"eventTime\": \"2018-07-03T23:20:52.646434+00:00\", \"data\": { \"deviceConnectionStateEventInfo\": { \"sequenceNumber\": \"000000000000000001D4132452F67CE200000002000000000000000000000002\" }, \"hubName\": \"EGTESTHUB1\", \"deviceId\": \"48e44e11-1437-4907-83b1-4a8d7e89859e\", \"moduleId\": \"\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -363,7 +363,7 @@ public void ConsumeIoTHubDeviceTelemetryEvent() { string requestContent = "[{ \"id\": \"877f0b10-a086-98ec-27b8-6ae2dfbf5f67\", \"topic\": \"/SUBSCRIPTIONS/BDF55CDD-8DAB-4CF4-9B2F-C21E8A780472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/EGTESTHUB1\", \"subject\": \"devices/48e44e11-1437-4907-83b1-4a8d7e89859e\", \"eventType\": \"Microsoft.Devices.DeviceTelemetry\", \"eventTime\": \"2018-07-03T23:20:52.646434+00:00\", \"data\": { \"body\": { \"Weather\": { \"Temperature\": 900 }, \"Location\": \"USA\" }, \"properties\": { \"Status\": \"Active\" }, \"systemProperties\": { \"iothub-content-type\": \"application/json\", \"iothub-content-encoding\": \"utf-8\" } }, \"dataVersion\": \"\"} ]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -395,7 +395,7 @@ public void ConsumeEventGridSubscriptionDeletedEvent() { string requestContent = "[{ \"id\": \"2d1781af-3a4c-4d7c-bd0c-e34b19da4e66\", \"topic\": \"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", \"subject\": \"\", \"data\": { \"eventSubscriptionId\": \"/subscriptions/id/resourceGroups/rg/providers/Microsoft.EventGrid/topics/topic1/providers/Microsoft.EventGrid/eventSubscriptions/eventsubscription1\" }, \"eventType\": \"Microsoft.EventGrid.SubscriptionDeletedEvent\", \"eventTime\": \"2018-01-25T22:12:19.4556811Z\", \"metadataVersion\": \"1\", \"dataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -411,7 +411,7 @@ public void ConsumeEventHubCaptureFileCreatedEvent() { string requestContent = "[ { \"topic\": \"/subscriptions/guid/resourcegroups/rgDataMigrationSample/providers/Microsoft.EventHub/namespaces/tfdatamigratens\", \"subject\": \"eventhubs/hubdatamigration\", \"eventType\": \"microsoft.EventHUB.CaptureFileCreated\", \"eventTime\": \"2017-08-31T19:12:46.0498024Z\", \"id\": \"14e87d03-6fbf-4bb2-9a21-92bd1281f247\", \"data\": { \"fileUrl\": \"https://tf0831datamigrate.blob.core.windows.net/windturbinecapture/tfdatamigratens/hubdatamigration/1/2017/08/31/19/11/45.avro\", \"fileType\": \"AzureBlockBlob\", \"partitionId\": \"1\", \"sizeInBytes\": 249168, \"eventCount\": 1500, \"firstSequenceNumber\": 2400, \"lastSequenceNumber\": 3899, \"firstEnqueueTime\": \"2017-08-31T19:12:14.674Z\", \"lastEnqueueTime\": \"2017-08-31T19:12:44.309Z\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -424,7 +424,7 @@ public void ConsumeEventHubCaptureFileCreatedEvent() public void ConsumeMachineLearningServicesModelRegisteredEvent() { string requestContent = "[{\"topic\":\"/subscriptions/a5fe3bc5-98f0-4c84-affc-a589f54d9b23/resourceGroups/jenns/providers/Microsoft.MachineLearningServices/workspaces/jenns-canary\",\"eventType\":\"Microsoft.MachineLearningServices.ModelRegistered\",\"subject\":\"models/sklearn_regression_model:3\",\"eventTime\":\"2019-10-17T22:23:57.5350054+00:00\",\"id\":\"3b73ee51-bbf4-480d-9112-cfc23b41bfdb\",\"data\":{\"modelName\":\"sklearn_regression_model\",\"modelVersion\":\"3\",\"modelTags\":{\"area\":\"diabetes\",\"type\":\"regression\"},\"modelProperties\":{\"area\":\"test\"}},\"dataVersion\":\"2\",\"metadataVersion\":\"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -445,7 +445,7 @@ public void ConsumeMachineLearningServicesModelRegisteredEvent() public void ConsumeMachineLearningServicesModelDeployedEvent() { string requestContent = "[{\"topic\":\"/subscriptions/a5fe3bc5-98f0-4c84-affc-a589f54d9b23/resourceGroups/jenns/providers/Microsoft.MachineLearningServices/workspaces/jenns-canary\",\"eventType\":\"Microsoft.MachineLearningServices.ModelDeployed\",\"subject\":\"endpoints/aciservice1\",\"eventTime\":\"2019-10-23T18:20:08.8824474+00:00\",\"id\":\"40d0b167-be44-477b-9d23-a2befba7cde0\",\"data\":{\"serviceName\":\"aciservice1\",\"serviceComputeType\":\"ACI\",\"serviceTags\":{\"mytag\":\"test tag\"},\"serviceProperties\":{\"myprop\":\"test property\"},\"modelIds\":\"my_first_model:1,my_second_model:1\"},\"dataVersion\":\"2\",\"metadataVersion\":\"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -457,7 +457,7 @@ public void ConsumeMachineLearningServicesModelDeployedEvent() public void ConsumeMachineLearningServicesRunCompletedEvent() { string requestContent = "[{\"topic\":\"/subscriptions/a5fe3bc5-98f0-4c84-affc-a589f54d9b23/resourceGroups/jenns/providers/Microsoft.MachineLearningServices/workspaces/jenns-canary\",\"eventType\":\"Microsoft.MachineLearningServices.RunCompleted\",\"subject\":\"experiments/0fa9dfaa-cba3-4fa7-b590-23e48548f5c1/runs/AutoML_ad912b2d-6467-4f32-a616-dbe4af6dd8fc\",\"eventTime\":\"2019-10-18T19:29:55.8856038+00:00\",\"id\":\"044ac44d-462c-4043-99eb-d9e01dc760ab\",\"data\":{\"experimentId\":\"0fa9dfaa-cba3-4fa7-b590-23e48548f5c1\",\"experimentName\":\"automl-local-regression\",\"runId\":\"AutoML_ad912b2d-6467-4f32-a616-dbe4af6dd8fc\",\"runType\":\"automl\",\"RunTags\":{\"experiment_status\":\"ModelSelection\",\"experiment_status_descr\":\"Beginning model selection.\"},\"runProperties\":{\"num_iterations\":\"10\",\"target\":\"local\"}},\"dataVersion\":\"2\",\"metadataVersion\":\"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -469,7 +469,7 @@ public void ConsumeMachineLearningServicesRunCompletedEvent() public void ConsumeMachineLearningServicesRunStatusChangedEvent() { string requestContent = "[{\"topic\":\"/subscriptions/a5fe3bc5-98f0-4c84-affc-a589f54d9b23/resourceGroups/jenns/providers/Microsoft.MachineLearningServices/workspaces/jenns-canary\",\"eventType\":\"Microsoft.MachineLearningServices.RunStatusChanged\",\"subject\":\"experiments/0fa9dfaa-cba3-4fa7-b590-23e48548f5c1/runs/AutoML_ad912b2d-6467-4f32-a616-dbe4af6dd8fc\",\"eventTime\":\"2020-03-09T23:53:04.4579724Z\",\"id\":\"aa8cd7df-fe28-5d5d-9b40-3342dbc2a887\",\"data\":{\"runStatus\": \"Running\",\"experimentId\":\"0fa9dfaa-cba3-4fa7-b590-23e48548f5c1\",\"experimentName\":\"automl-local-regression\",\"runId\":\"AutoML_ad912b2d-6467-4f32-a616-dbe4af6dd8fc\",\"runType\":\"automl\",\"runTags\":{\"experiment_status\":\"ModelSelection\",\"experiment_status_descr\":\"Beginning model selection.\"},\"runProperties\":{\"num_iterations\":\"10\",\"target\":\"local\"}},\"dataVersion\":\"2\",\"metadataVersion\":\"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -483,7 +483,7 @@ public void ConsumeMachineLearningServicesRunStatusChangedEvent() public void ConsumeMachineLearningServicesDatasetDriftDetectedEvent() { string requestContent = "[{\"topic\":\"/subscriptions/60582a10-b9fd-49f1-a546-c4194134bba8/resourceGroups/copetersRG/providers/Microsoft.MachineLearningServices/workspaces/driftDemoWS\",\"eventType\":\"Microsoft.MachineLearningServices.DatasetDriftDetected\",\"subject\":\"datadrift/01d29aa4-e6a4-470a-9ef3-66660d21f8ef/run/01d29aa4-e6a4-470a-9ef3-66660d21f8ef_1571590300380\",\"eventTime\":\"2019-10-20T17:08:08.467191+00:00\",\"id\":\"2684de79-b145-4dcf-ad2e-6a1db798585f\",\"data\":{\"dataDriftId\":\"01d29aa4-e6a4-470a-9ef3-66660d21f8ef\",\"dataDriftName\":\"copetersDriftMonitor3\",\"runId\":\"01d29aa4-e6a4-470a-9ef3-66660d21f8ef_1571590300380\",\"baseDatasetId\":\"3c56d136-0f64-4657-a0e8-5162089a88a3\",\"tarAsSystemEventDatasetId\":\"d7e74d2e-c972-4266-b5fb-6c9c182d2a74\",\"driftCoefficient\":0.8350349068479208,\"startTime\":\"2019-07-04T00:00:00+00:00\",\"endTime\":\"2019-07-05T00:00:00+00:00\"},\"dataVersion\":\"2\",\"metadataVersion\":\"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -496,7 +496,7 @@ public void ConsumeMachineLearningServicesDatasetDriftDetectedEvent() public void ConsumeMapsGeofenceEnteredEvent() { string requestContent = "[{ \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"topic\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.Maps/test1\", \"subject\": \"test1\", \"eventType\": \"Microsoft.Maps.GeofenceEntered\",\"eventTime\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"expiredGeofenceGeometryId\":[\"id1\",\"id2\"],\"geometries\":[{\"deviceId\":\"id1\",\"distance\":1.0,\"geometryId\":\"gid1\",\"nearestLat\":72.4,\"nearestLon\":100.4,\"udId\":\"id22\"}],\"invalidPeriodGeofenceGeometryId\":[\"id1\",\"id2\"],\"isEventPublished\":true}, \"dataVersion\":\"\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -507,7 +507,7 @@ public void ConsumeMapsGeofenceEnteredEvent() public void ConsumeMapsGeofenceExitedEvent() { string requestContent = "[{ \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"topic\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.Maps/test1\", \"subject\": \"test1\", \"eventType\": \"Microsoft.Maps.GeofenceExited\",\"eventTime\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"expiredGeofenceGeometryId\":[\"id1\",\"id2\"],\"geometries\":[{\"deviceId\":\"id1\",\"distance\":1.0,\"geometryId\":\"gid1\",\"nearestLat\":72.4,\"nearestLon\":100.4,\"udId\":\"id22\"}],\"invalidPeriodGeofenceGeometryId\":[\"id1\",\"id2\"],\"isEventPublished\":true}, \"dataVersion\":\"\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -518,7 +518,7 @@ public void ConsumeMapsGeofenceExitedEvent() public void ConsumeMapsGeofenceResultEvent() { string requestContent = "[{ \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"topic\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.Maps/test1\", \"subject\": \"test1\", \"eventType\": \"Microsoft.Maps.GeofenceResult\",\"eventTime\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"expiredGeofenceGeometryId\":[\"id1\",\"id2\"],\"geometries\":[{\"deviceId\":\"id1\",\"distance\":1.0,\"geometryId\":\"gid1\",\"nearestLat\":72.4,\"nearestLon\":100.4,\"udId\":\"id22\"}],\"invalidPeriodGeofenceGeometryId\":[\"id1\",\"id2\"],\"isEventPublished\":true}, \"dataVersion\":\"\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -531,7 +531,7 @@ public void ConsumeMapsGeofenceResultEvent() public void ConsumeMediaMediaJobStateChangeEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"eventType\": \"Microsoft.Media.JobStateChange\", \"eventTime\": \"2018-10-12T15:14:20.2412317\", \"id\": \"341520d0-dac0-4930-97dd-3085538c624f\", \"data\": { \"previousState\": \"Scheduled\", \"state\": \"Processing\", \"correlationData\": {} }, \"dataVersion\": \"2.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -544,7 +544,7 @@ public void ConsumeMediaJobOutputStateChangeEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"eventType\": \"Microsoft.Media.JobOutputStateChange\", \"eventTime\": \"2018-10-12T15:14:17.8962704\", \"id\": \"8d0305c0-28c0-4cc9-b613-776e4dd31e9a\", \"data\": { \"previousState\": \"Scheduled\", \"output\": { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"error\": {\"code\":\"ServiceError\", \"message\":\"error message\", \"category\":\"Service\", \"retry\":\"DoNotRetry\", \"details\":[{\"code\":\"code\", \"message\":\"Service Error Message\"}]}, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 0, \"state\": \"Processing\" }, \"jobCorrelationData\": {} }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -560,7 +560,7 @@ public void ConsumeMediaJobScheduledEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"eventType\": \"Microsoft.Media.JobScheduled\", \"eventTime\": \"2018-10-12T15:14:11.3028183\", \"id\": \"9b17dbf0-355d-4fb0-9a73-e76b150858c8\", \"data\": { \"previousState\": \"Queued\", \"state\": \"Scheduled\", \"correlationData\": {} }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -573,7 +573,7 @@ public void ConsumeMediaJobProcessingEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"eventType\": \"Microsoft.Media.JobProcessing\", \"eventTime\": \"2018-10-12T15:14:20.2412317\", \"id\": \"72162c44-c7f4-437a-9592-48b83cec2d18\", \"data\": { \"previousState\": \"Scheduled\", \"state\": \"Processing\", \"correlationData\": {} }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -586,7 +586,7 @@ public void ConsumeMediaJobCancelingEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-7a8215f9-0f8d-48a6-82ed-1ead772bc221\", \"eventType\": \"Microsoft.Media.JobCanceling\", \"eventTime\": \"2018-10-12T15:41:50.5513295\", \"id\": \"1f9a488b-abe3-4fca-80b8-aae59bf7f123\", \"data\": { \"previousState\": \"Processing\", \"state\": \"Canceling\", \"correlationData\": {} }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -598,7 +598,7 @@ public void ConsumeMediaJobCancelingEvent() public void ConsumeMediaJobFinishedEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-298338bb-f8d1-4d0f-9fde-544e0ac4d983\", \"eventType\": \"Microsoft.Media.JobFinished\", \"eventTime\": \"2018-10-01T20:58:26.7886175\", \"id\": \"83f8464d-be94-48e5-b67b-46c6199fe28e\", \"data\": { \"outputs\": [ { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-298338bb-f8d1-4d0f-9fde-544e0ac4d983\", \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 100, \"state\": \"Finished\" } ], \"previousState\": \"Processing\", \"state\": \"Finished\", \"correlationData\": {} }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -619,7 +619,7 @@ public void ConsumeMediaJobCanceledEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-7a8215f9-0f8d-48a6-82ed-1ead772bc221\", \"eventType\": \"Microsoft.Media.JobCanceled\", \"eventTime\": \"2018-10-12T15:42:05.6519929\", \"id\": \"3fef7871-f916-4980-8a45-e79a2675808b\", \"data\": { \"outputs\": [ { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-7a8215f9-0f8d-48a6-82ed-1ead772bc221\", \"error\": {\"code\":\"ServiceError\", \"message\":\"error message\", \"category\":\"Service\", \"retry\":\"DoNotRetry\", \"details\":[{\"code\":\"code\", \"message\":\"Service Error Message\"}]}, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 83, \"state\": \"Canceled\" } ], \"previousState\": \"Canceling\", \"state\": \"Canceled\", \"correlationData\": {} }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -640,7 +640,7 @@ public void ConsumeMediaJobErroredEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"eventType\": \"Microsoft.Media.JobErrored\", \"eventTime\": \"2018-10-12T15:29:20.9954767\", \"id\": \"2749e9cf-4095-4723-9bc5-df8e15289135\", \"data\": { \"outputs\": [ { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"error\": { \"category\": \"Service\", \"code\": \"ServiceError\", \"details\": [ { \"code\": \"Internal\", \"message\": \"Internal error in initializing the task for processing\" } ], \"message\": \"Fatal service error, please contact support.\", \"retry\": \"DoNotRetry\" }, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 83, \"state\": \"Error\" } ], \"previousState\": \"Processing\", \"state\": \"Error\", \"correlationData\": {} }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -660,7 +660,7 @@ public void ConsumeMediaJobOutputCanceledEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-7a8215f9-0f8d-48a6-82ed-1ead772bc221\", \"eventType\": \"Microsoft.Media.JobOutputCanceled\", \"eventTime\": \"2018-10-12T15:42:04.949555\", \"id\": \"9297cda2-4a50-4622-a679-c3785d27d512\", \"data\": { \"previousState\": \"Canceling\", \"output\": { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-7a8215f9-0f8d-48a6-82ed-1ead772bc221\", \"error\": {\"code\":\"ServiceError\", \"message\":\"error message\", \"category\":\"Service\", \"retry\":\"DoNotRetry\", \"details\":[{\"code\":\"code\", \"message\":\"Service Error Message\"}]}, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 83, \"state\": \"Canceled\" }, \"jobCorrelationData\": {} }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -674,7 +674,7 @@ public void ConsumeMediaJobOutputCancelingEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-7a8215f9-0f8d-48a6-82ed-1ead772bc221\", \"eventType\": \"Microsoft.Media.JobOutputCanceling\", \"eventTime\": \"2018-10-12T15:42:04.949555\", \"id\": \"9297cda2-4a50-4622-a679-c3785d27d512\", \"data\": { \"previousState\": \"Processing\", \"output\": { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-7a8215f9-0f8d-48a6-82ed-1ead772bc221\", \"error\": { \"category\": \"Service\", \"code\": \"ServiceError\", \"details\": [ { \"code\": \"Internal\", \"message\": \"Internal error in initializing the task for processing\" } ], \"message\": \"Fatal service error, please contact support.\", \"retry\": \"DoNotRetry\" }, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 83, \"state\": \"Canceling\" }, \"jobCorrelationData\": {} }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -688,7 +688,7 @@ public void ConsumeMediaJobOutputErroredEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"eventType\": \"Microsoft.Media.JobOutputErrored\", \"eventTime\": \"2018-10-12T15:29:20.2621252\", \"id\": \"bc9e6342-f081-49c2-a579-92f506a622c2\", \"data\": { \"previousState\": \"Processing\", \"output\": { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"error\": { \"category\": \"Service\", \"code\": \"ServiceError\", \"details\": [ { \"code\": \"Internal\", \"message\": \"Internal error in initializing the task for processing\" } ], \"message\": \"Fatal service error, please contact support.\", \"retry\": \"DoNotRetry\" }, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 83, \"state\": \"Error\" }, \"jobCorrelationData\": {} }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -706,7 +706,7 @@ public void ConsumeMediaJobOutputFinishedEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"eventType\": \"Microsoft.Media.JobOutputFinished\", \"eventTime\": \"2018-10-12T15:29:20.2621252\", \"id\": \"bc9e6342-f081-49c2-a579-92f506a622c2\", \"data\": { \"previousState\": \"Processing\", \"output\": { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 100, \"state\": \"Finished\" }, \"jobCorrelationData\": {} }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -726,7 +726,7 @@ public void ConsumeMediaJobOutputProcessingEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"eventType\": \"Microsoft.Media.JobOutputProcessing\", \"eventTime\": \"2018-10-12T15:14:17.8962704\", \"id\": \"d48eeb0b-2bfa-4265-a2f8-624654c3781c\", \"data\": { \"previousState\": \"Scheduled\", \"output\": { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"error\": { \"category\": \"Service\", \"code\": \"ServiceError\", \"details\": [ { \"code\": \"Internal\", \"message\": \"Internal error in initializing the task for processing\" } ], \"message\": \"Fatal service error, please contact support.\", \"retry\": \"DoNotRetry\" }, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 0, \"state\": \"Processing\" }, \"jobCorrelationData\": {} }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -740,7 +740,7 @@ public void ConsumeMediaJobOutputScheduledEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"eventType\": \"Microsoft.Media.JobOutputScheduled\", \"eventTime\": \"2018-10-12T15:14:11.2244618\", \"id\": \"635ca6ea-5306-4590-b2e1-22f172759336\", \"data\": { \"previousState\": \"Queued\", \"output\": { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"error\": { \"category\": \"Service\", \"code\": \"ServiceError\", \"details\": [ { \"code\": \"Internal\", \"message\": \"Internal error in initializing the task for processing\" } ], \"message\": \"Fatal service error, please contact support.\", \"retry\": \"DoNotRetry\" }, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 0, \"state\": \"Scheduled\" }, \"jobCorrelationData\": {} }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -754,7 +754,7 @@ public void ConsumeMediaJobOutputProgressEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6981\", \"eventType\": \"Microsoft.Media.JobOutputProgress\", \"eventTime\": \"2018-10-12T15:14:11.2244618\", \"id\": \"635ca6ea-5306-4590-b2e1-22f172759336\", \"data\": { \"jobCorrelationData\": { \"Field1\": \"test1\", \"Field2\": \"test2\" }, \"label\": \"TestLabel\", \"progress\": 50 }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -773,7 +773,7 @@ public void ConsumeMediaLiveEventEncoderConnectedEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"eventType\": \"Microsoft.Media.LiveEventEncoderConnected\", \"eventTime\": \"2018-10-12T15:52:04.2013501\", \"id\": \"3d1f5b26-c466-47e7-927b-900985e0c5d5\", \"data\": { \"ingestUrl\": \"rtmp://liveevent-ec9d26a8.channel.media.azure.net:1935/live/cb5540b10a5646218c1328be95050c59\", \"streamId\": \"Mystream1\", \"encoderIp\": \"\", \"encoderPort\": \"3557\" }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -790,7 +790,7 @@ public void ConsumeMediaLiveEventConnectionRejectedEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"eventType\": \"Microsoft.Media.LiveEventConnectionRejected\", \"eventTime\": \"2018-10-12T15:52:04.2013501\", \"id\": \"3d1f5b26-c466-47e7-927b-900985e0c5d5\", \"data\": { \"ingestUrl\": \"rtmp://liveevent-ec9d26a8.channel.media.azure.net:1935/live/cb5540b10a5646218c1328be95050c59\", \"streamId\": \"Mystream1\", \"encoderIp\": \"\", \"encoderPort\": \"3557\", \"resultCode\": \"MPE_INGEST_CODEC_NOT_SUPPORTED\" }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -806,7 +806,7 @@ public void ConsumeMediaLiveEventConnectionRejectedEvent() public void ConsumeMediaLiveEventEncoderDisconnectedEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"eventType\": \"Microsoft.Media.LiveEventEncoderDisconnected\", \"eventTime\": \"2018-10-12T15:52:19.8982128\", \"id\": \"e4b55140-42d2-4c24-b08e-9aa12f1587fc\", \"data\": { \"ingestUrl\": \"rtmp://liveevent-ec9d26a8.channel.media.azure.net:1935/live/cb5540b10a5646218c1328be95050c59\", \"streamId\": \"Mystream1\", \"encoderIp\": \"\", \"encoderPort\": \"3557\", \"resultCode\": \"MPE_CLIENT_TERMINATED_SESSION\" }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -824,7 +824,7 @@ public void ConsumeMediaLiveEventIncomingStreamReceivedEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"eventType\": \"Microsoft.Media.LiveEventIncomingStreamReceived\", \"eventTime\": \"2018-10-12T15:52:16.5726463Z\", \"id\": \"eb688fa1-5a19-4703-8aeb-6a65a09790da\", \"data\": { \"ingestUrl\": \"rtmp://liveevent-ec9d26a8.channel.media.azure.net:1935/live/cb5540b10a5646218c1328be95050c59\", \"trackType\": \"audio\", \"trackName\": \"audio_160000\", \"bitrate\": 160000, \"encoderIp\": \"\", \"encoderPort\": \"3557\", \"timestamp\": \"66\", \"duration\": \"1950\", \"timescale\": \"1000\" }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -846,7 +846,7 @@ public void ConsumeMediaLiveEventIncomingStreamsOutOfSyncEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"eventType\": \"Microsoft.Media.LiveEventIncomingStreamsOutOfSync\", \"eventTime\": \"2018-10-12T15:52:37.3710102\", \"id\": \"d84727e2-d9c0-4a21-a66b-8d23f06b3e06\", \"data\": { \"minLastTimestamp\": \"10999\", \"typeOfStreamWithMinLastTimestamp\": \"video\", \"maxLastTimestamp\": \"100999\", \"typeOfStreamWithMaxLastTimestamp\": \"audio\", \"timescaleOfMinLastTimestamp\": \"1000\", \"timescaleOfMaxLastTimestamp\": \"1000\" }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -865,7 +865,7 @@ public void ConsumeMediaLiveEventIncomingVideoStreamsOutOfSyncEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"eventType\": \"Microsoft.Media.LiveEventIncomingVideoStreamsOutOfSync\", \"eventTime\": \"2018-10-12T15:52:37.3710102\", \"id\": \"d84727e2-d9c0-4a21-a66b-8d23f06b3e06\", \"data\": { \"firstTimestamp\": \"10999\", \"firstDuration\": \"2000\", \"secondTimestamp\": \"100999\", \"secondDuration\": \"2000\", \"timescale\": \"1000\" }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -883,7 +883,7 @@ public void ConsumeMediaLiveEventIncomingDataChunkDroppedEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"eventType\": \"Microsoft.Media.LiveEventIncomingDataChunkDropped\", \"eventTime\": \"2018-10-12T15:52:37.3710102\", \"id\": \"d84727e2-d9c0-4a21-a66b-8d23f06b3e06\", \"data\": { \"timestamp\": \"8999\", \"trackType\": \"video\", \"trackName\": \"video1\", \"bitrate\": 2500000, \"timescale\": \"1000\", \"resultCode\": \"FragmentDrop_OverlapTimestamp\" }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -902,7 +902,7 @@ public void ConsumeMediaLiveEventIngestHeartbeatEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"eventType\": \"Microsoft.Media.LiveEventIngestHeartbeat\", \"eventTime\": \"2018-10-12T15:52:37.3710102\", \"id\": \"d84727e2-d9c0-4a21-a66b-8d23f06b3e06\", \"data\": { \"trackType\": \"video\", \"trackName\": \"video\", \"bitrate\": 2500000, \"incomingBitrate\": 500726, \"lastTimestamp\": \"11999\", \"timescale\": \"1000\", \"overlapCount\": 0, \"discontinuityCount\": 0, \"nonincreasingCount\": 0, \"unexpectedBitrate\": true, \"state\": \"Running\", \"healthy\": false }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -926,7 +926,7 @@ public void ConsumeMediaLiveEventTrackDiscontinuityDetectedEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"eventType\": \"Microsoft.Media.LiveEventTrackDiscontinuityDetected\", \"eventTime\": \"2018-10-12T15:52:37.3710102\", \"id\": \"d84727e2-d9c0-4a21-a66b-8d23f06b3e06\", \"data\": { \"trackType\": \"video\", \"trackName\": \"video\", \"bitrate\": 2500000, \"previousTimestamp\": \"10999\", \"newTimestamp\": \"14999\", \"timescale\": \"1000\", \"discontinuityGap\": \"4000\" }, \"dataVersion\": \"1.0\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -947,7 +947,7 @@ public void ConsumeResourceWriteSuccessEvent() { string requestContent = "[ { \"topic\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"eventType\":\"Microsoft.Resources.ResourceWriteSuccess\", \"eventTime\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -959,7 +959,7 @@ public void ConsumeResourceWriteFailureEvent() { string requestContent = "[ { \"topic\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"eventType\":\"Microsoft.Resources.ResourceWriteFailure\", \"eventTime\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -971,7 +971,7 @@ public void ConsumeResourceWriteCancelEvent() { string requestContent = "[ { \"topic\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"eventType\":\"Microsoft.Resources.ResourceWriteCancel\", \"eventTime\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -983,7 +983,7 @@ public void ConsumeResourceDeleteSuccessEvent() { string requestContent = "[ { \"topic\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"eventType\":\"Microsoft.Resources.ResourceDeleteSuccess\", \"eventTime\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -995,7 +995,7 @@ public void ConsumeResourceDeleteFailureEvent() { string requestContent = "[ { \"topic\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"eventType\":\"Microsoft.Resources.ResourceDeleteFailure\", \"eventTime\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1007,7 +1007,7 @@ public void ConsumeResourceDeleteCancelEvent() { string requestContent = "[ { \"topic\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"eventType\":\"Microsoft.Resources.ResourceDeleteCancel\", \"eventTime\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1019,7 +1019,7 @@ public void ConsumeResourceActionSuccessEvent() { string requestContent = "[ { \"topic\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"eventType\":\"Microsoft.Resources.ResourceActionSuccess\", \"eventTime\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1031,7 +1031,7 @@ public void ConsumeResourceActionFailureEvent() { string requestContent = "[ { \"topic\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"eventType\":\"Microsoft.Resources.ResourceActionFailure\", \"eventTime\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1043,7 +1043,7 @@ public void ConsumeResourceActionCancelEvent() { string requestContent = "[ { \"topic\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"eventType\":\"Microsoft.Resources.ResourceActionCancel\", \"eventTime\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\" }]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1057,7 +1057,7 @@ public void ConsumeServiceBusActiveMessagesAvailableWithNoListenersEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/id/resourcegroups/rg/providers/Microsoft.ServiceBus/namespaces/testns1\", \"subject\": \"topics/topic1/subscriptions/sub1\", \"eventType\": \"Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners\", \"eventTime\": \"2018-02-14T05:12:53.4133526Z\", \"id\": \"dede87b0-3656-419c-acaf-70c95ddc60f5\", \"data\": { \"namespaceName\": \"testns1\", \"requestUri\": \"https://testns1.servicebus.windows.net/t1/subscriptions/sub1/messages/head\", \"entityType\": \"subscriber\", \"queueName\": \"queue1\", \"topicName\": \"topic1\", \"subscriptionName\": \"sub1\" }, \"dataVersion\": \"1\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1069,7 +1069,7 @@ public void ConsumeServiceBusDeadletterMessagesAvailableWithNoListenersEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/id/resourcegroups/rg/providers/Microsoft.ServiceBus/namespaces/testns1\", \"subject\": \"topics/topic1/subscriptions/sub1\", \"eventType\": \"Microsoft.ServiceBus.DeadletterMessagesAvailableWithNoListener\", \"eventTime\": \"2018-02-14T05:12:53.4133526Z\", \"id\": \"dede87b0-3656-419c-acaf-70c95ddc60f5\", \"data\": { \"namespaceName\": \"testns1\", \"requestUri\": \"https://testns1.servicebus.windows.net/t1/subscriptions/sub1/messages/head\", \"entityType\": \"subscriber\", \"queueName\": \"queue1\", \"topicName\": \"topic1\", \"subscriptionName\": \"sub1\" }, \"dataVersion\": \"1\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1083,7 +1083,7 @@ public void ConsumeStorageBlobCreatedEvent() { string requestContent = "[ { \"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Storage/storageAccounts/myaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/file1.txt\", \"eventType\": \"Microsoft.Storage.BlobCreated\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\", \"id\": \"602a88ef-0001-00e6-1233-1646070610ea\", \"data\": { \"api\": \"PutBlockList\", \"clientRequestId\": \"799304a4-bbc5-45b6-9849-ec2c66be800a\", \"requestId\": \"602a88ef-0001-00e6-1233-164607000000\", \"eTag\": \"0x8D4E44A24ABE7F1\", \"contentType\": \"text/plain\", \"contentLength\": 447, \"blobType\": \"BlockBlob\", \"url\": \"https://myaccount.blob.core.windows.net/testcontainer/file1.txt\", \"sequencer\": \"00000000000000EB000000000000C65A\" }, \"dataVersion\": \"\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1095,7 +1095,7 @@ public void ConsumeStorageBlobDeletedEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/id/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testfile.txt\", \"eventType\": \"Microsoft.Storage.BlobDeleted\", \"eventTime\": \"2017-11-07T20:09:22.5674003Z\", \"id\": \"4c2359fe-001e-00ba-0e04-58586806d298\", \"data\": { \"api\": \"DeleteBlob\", \"requestId\": \"4c2359fe-001e-00ba-0e04-585868000000\", \"contentType\": \"text/plain\", \"blobType\": \"BlockBlob\", \"url\": \"https://example.blob.core.windows.net/testcontainer/testfile.txt\", \"sequencer\": \"0000000000000281000000000002F5CA\", \"storageDiagnostics\": { \"batchId\": \"b68529f3-68cd-4744-baa4-3c0498ec19f0\" } }, \"dataVersion\": \"\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1107,7 +1107,7 @@ public void ConsumeStorageBlobRenamedEvent() { string requestContent = "[ { \"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Storage/storageAccounts/myaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testfile.txt\", \"eventType\": \"Microsoft.Storage.BlobRenamed\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\", \"id\": \"602a88ef-0001-00e6-1233-1646070610ea\", \"data\": { \"api\": \"RenameFile\", \"clientRequestId\": \"799304a4-bbc5-45b6-9849-ec2c66be800a\", \"requestId\": \"602a88ef-0001-00e6-1233-164607000000\", \"eTag\": \"0x8D4E44A24ABE7F1\", \"destinationUrl\": \"https://myaccount.blob.core.windows.net/testcontainer/testfile.txt\", \"sequencer\": \"00000000000000EB000000000000C65A\" }, \"dataVersion\": \"1\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1119,7 +1119,7 @@ public void ConsumeStorageDirectoryCreatedEvent() { string requestContent = "[ { \"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Storage/storageAccounts/myaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testDir\", \"eventType\": \"Microsoft.Storage.DirectoryCreated\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\", \"id\": \"602a88ef-0001-00e6-1233-1646070610ea\", \"data\": { \"api\": \"CreateDirectory\", \"clientRequestId\": \"799304a4-bbc5-45b6-9849-ec2c66be800a\", \"requestId\": \"602a88ef-0001-00e6-1233-164607000000\", \"eTag\": \"0x8D4E44A24ABE7F1\", \"url\": \"https://myaccount.blob.core.windows.net/testcontainer/testDir\", \"sequencer\": \"00000000000000EB000000000000C65A\" }, \"dataVersion\": \"2\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1131,7 +1131,7 @@ public void ConsumeStorageDirectoryDeletedEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/id/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testDir\", \"eventType\": \"Microsoft.Storage.DirectoryDeleted\", \"eventTime\": \"2017-11-07T20:09:22.5674003Z\", \"id\": \"4c2359fe-001e-00ba-0e04-58586806d298\", \"data\": { \"api\": \"DeleteDirectory\", \"requestId\": \"4c2359fe-001e-00ba-0e04-585868000000\", \"url\": \"https://example.blob.core.windows.net/testcontainer/testDir\", \"sequencer\": \"0000000000000281000000000002F5CA\", \"storageDiagnostics\": { \"batchId\": \"b68529f3-68cd-4744-baa4-3c0498ec19f0\" } }, \"dataVersion\": \"1\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1143,7 +1143,7 @@ public void ConsumeStorageDirectoryRenamedEvent() { string requestContent = "[{ \"topic\": \"/subscriptions/id/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testDir\", \"eventType\": \"Microsoft.Storage.DirectoryRenamed\", \"eventTime\": \"2017-11-07T20:09:22.5674003Z\", \"id\": \"4c2359fe-001e-00ba-0e04-58586806d298\", \"data\": { \"api\": \"RenameDirectory\", \"requestId\": \"4c2359fe-001e-00ba-0e04-585868000000\", \"destinationUrl\": \"https://example.blob.core.windows.net/testcontainer/testDir\", \"sequencer\": \"0000000000000281000000000002F5CA\", \"storageDiagnostics\": { \"batchId\": \"b68529f3-68cd-4744-baa4-3c0498ec19f0\" } }, \"dataVersion\": \"1\", \"metadataVersion\": \"1\"}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1158,7 +1158,7 @@ public void ConsumeWebAppUpdatedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"eventType\": \"Microsoft.Web.AppUpdated\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"dataVersion\": \"2\",\"metadataVersion\": \"1\"}}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1171,7 +1171,7 @@ public void ConsumeWebBackupOperationStartedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"eventType\": \"Microsoft.Web.BackupOperationStarted\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"dataVersion\": \"2\",\"metadataVersion\": \"1\"}}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1184,7 +1184,7 @@ public void ConsumeWebBackupOperationCompletedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"eventType\": \"Microsoft.Web.BackupOperationCompleted\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"dataVersion\": \"2\",\"metadataVersion\": \"1\"}}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1197,7 +1197,7 @@ public void ConsumeWebBackupOperationFailedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"eventType\": \"Microsoft.Web.BackupOperationFailed\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"dataVersion\": \"2\",\"metadataVersion\": \"1\"}}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1213,7 +1213,7 @@ public void ConsumeWebRestoreOperationStartedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"eventType\": \"Microsoft.Web.RestoreOperationStarted\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"dataVersion\": \"2\",\"metadataVersion\": \"1\"}}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1229,7 +1229,7 @@ public void ConsumeWebRestoreOperationCompletedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"eventType\": \"Microsoft.Web.RestoreOperationCompleted\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"dataVersion\": \"2\",\"metadataVersion\": \"1\"}}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1242,7 +1242,7 @@ public void ConsumeWebRestoreOperationFailedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"eventType\": \"Microsoft.Web.RestoreOperationFailed\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"dataVersion\": \"2\",\"metadataVersion\": \"1\"}}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1255,7 +1255,7 @@ public void ConsumeWebSlotSwapStartedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"eventType\": \"Microsoft.Web.SlotSwapStarted\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"dataVersion\": \"2\",\"metadataVersion\": \"1\"}}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1268,7 +1268,7 @@ public void ConsumeWebSlotSwapCompletedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"eventType\": \"Microsoft.Web.SlotSwapCompleted\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"dataVersion\": \"2\",\"metadataVersion\": \"1\"}}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1281,7 +1281,7 @@ public void ConsumeWebSlotSwapFailedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"eventType\": \"Microsoft.Web.SlotSwapFailed\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"dataVersion\": \"2\",\"metadataVersion\": \"1\"}}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1294,7 +1294,7 @@ public void ConsumeWebSlotSwapWithPreviewStartedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"eventType\": \"Microsoft.Web.SlotSwapWithPreviewStarted\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"dataVersion\": \"2\",\"metadataVersion\": \"1\"}}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1307,7 +1307,7 @@ public void ConsumeWebSlotSwapWithPreviewCancelledEvent() string siteName = "testSite01"; string requestContent = $"[{{\"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"eventType\": \"Microsoft.Web.SlotSwapWithPreviewCancelled\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"dataVersion\": \"2\",\"metadataVersion\": \"1\"}}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1320,7 +1320,7 @@ public void ConsumeWebAppServicePlanUpdatedEvent() string planName = "testPlan01"; string requestContent = $"[{{\"topic\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/serverfarms/testPlan01\", \"subject\": \"/Microsoft.Web/serverfarms/testPlan01\",\"eventType\": \"Microsoft.Web.AppServicePlanUpdated\", \"eventTime\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appServicePlanEventTypeDetail\": {{ \"stampKind\": \"Public\",\"action\": \"Updated\",\"status\": \"Started\" }},\"name\": \"{planName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"dataVersion\": \"2\",\"metadataVersion\": \"1\"}}]"; - EventGridEvent[] events = EventGridEvent.ParseEvents(requestContent); + EventGridEvent[] events = EventGridEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1338,7 +1338,7 @@ public void ParsesCloudEventEnvelope() { string requestContent = "[{\"key\": \"value\", \"id\":\"994bc3f8-c90c-6fc3-9e83-6783db2221d5\",\"source\":\"Subject-0\", \"data\": { \"api\": \"DeleteBlob\", \"requestId\": \"4c2359fe-001e-00ba-0e04-585868000000\", \"contentType\": \"text/plain\", \"blobType\": \"BlockBlob\", \"url\": \"https://example.blob.core.windows.net/testcontainer/testfile.txt\", \"sequencer\": \"0000000000000281000000000002F5CA\", \"brandNewProperty\": \"0000000000000281000000000002F5CA\", \"storageDiagnostics\": { \"batchId\": \"b68529f3-68cd-4744-baa4-3c0498ec19f0\" } }, \"type\":\"Microsoft.Storage.BlobDeleted\",\"specversion\":\"1.0\", \"dataschema\":\"1.0\", \"subject\":\"subject\", \"datacontenttype\": \"text/plain\", \"time\": \"2017-08-16T01:57:26.005121Z\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); var cloudEvent = events[0]; @@ -1359,7 +1359,7 @@ public void ConsumeCloudEventsWithAdditionalProperties() { string requestContent = "[{\"key\": \"value\", \"id\":\"994bc3f8-c90c-6fc3-9e83-6783db2221d5\",\"source\":\"Subject-0\", \"data\": { \"api\": \"DeleteBlob\", \"requestId\": \"4c2359fe-001e-00ba-0e04-585868000000\", \"contentType\": \"text/plain\", \"blobType\": \"BlockBlob\", \"url\": \"https://example.blob.core.windows.net/testcontainer/testfile.txt\", \"sequencer\": \"0000000000000281000000000002F5CA\", \"brandNewProperty\": \"0000000000000281000000000002F5CA\", \"storageDiagnostics\": { \"batchId\": \"b68529f3-68cd-4744-baa4-3c0498ec19f0\" } }, \"type\":\"Microsoft.Storage.BlobDeleted\",\"specversion\":\"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); if (events[0].Type == SystemEventNames.StorageBlobDeleted) @@ -1394,7 +1394,7 @@ public void ConsumeCloudEventNotWrappedInAnArray() { string requestContent = "{ \"source\": \"/subscriptions/id/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testfile.txt\", \"type\": \"Microsoft.Storage.BlobDeleted\", \"time\": \"2017-11-07T20:09:22.5674003Z\", \"id\": \"4c2359fe-001e-00ba-0e04-58586806d298\", \"data\": { \"api\": \"DeleteBlob\", \"requestId\": \"4c2359fe-001e-00ba-0e04-585868000000\", \"contentType\": \"text/plain\", \"blobType\": \"BlockBlob\", \"url\": \"https://example.blob.core.windows.net/testcontainer/testfile.txt\", \"sequencer\": \"0000000000000281000000000002F5CA\", \"brandNewProperty\": \"0000000000000281000000000002F5CA\", \"storageDiagnostics\": { \"batchId\": \"b68529f3-68cd-4744-baa4-3c0498ec19f0\" } }}"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent, skipValidation: true); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent), skipValidation: true); Assert.NotNull(events); if (events[0].Type == SystemEventNames.StorageBlobDeleted) @@ -1420,7 +1420,7 @@ public void ConsumeMultipleCloudEventsInSameBatch() PropertyNamingPolicy = JsonNamingPolicy.CamelCase }); - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.AreEqual(5, events.Length); @@ -1463,7 +1463,7 @@ public void ConsumeCloudEventWithBinaryDataPayload() { string requestContent = "[{\"id\":\"994bc3f8-c90c-6fc3-9e83-6783db2221d5\",\"source\":\"Subject-0\", \"data_base64\": \"ZGF0YQ==\", \"type\":\"Test.Items.BinaryDataType\",\"specversion\":\"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); if (events[0].Type == "Test.Items.BinaryDataType") { var eventData = (BinaryData)events[0].Data; @@ -1482,7 +1482,7 @@ public void ConsumeCloudEventWithCustomEventPayload() PropertyNamingPolicy = JsonNamingPolicy.CamelCase }); - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); @@ -1501,7 +1501,7 @@ public void ConsumeCloudEventWithArrayDataPayload() PropertyNamingPolicy = JsonNamingPolicy.CamelCase }); - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); @@ -1516,7 +1516,7 @@ public void ConsumeCloudEventWithNoData() { string requestContent = "[{\"id\":\"994bc3f8-c90c-6fc3-9e83-6783db2221d5\",\"type\":\"type\",\"source\":\"Subject-0\",\"specversion\":\"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); var eventData1 = events[0].Data; Assert.AreEqual(eventData1, null); @@ -1528,7 +1528,7 @@ public void ConsumeCloudEventWithExplicitlyNullData() { string requestContent = "[{\"id\":\"994bc3f8-c90c-6fc3-9e83-6783db2221d5\", \"type\":\"type\", \"source\":\"Subject-0\", \"data\":null, \"specversion\":\"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.IsNull(events[0].Data.ToObjectFromJson()); Assert.AreEqual("type", events[0].Type); } @@ -1540,7 +1540,7 @@ public void ConsumeCloudEventWithBooleanData() { string requestContent = "[{ \"id\": \"2d1781af-3a4c-4d7c-bd0c-e34b19da4e66\", \"source\":\"/contoso/items\", \"subject\": \"\", \"data\": true, \"type\": \"Contoso.Items.ItemReceived\", \"time\": \"2018-01-25T22:12:19.4556811Z\", \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); BinaryData binaryEventData = events[0].Data; @@ -1552,7 +1552,7 @@ public void ConsumeCloudEventWithBooleanData() public void ConsumeCloudEventWithStringData() { string requestContent = "[{ \"id\": \"2d1781af-3a4c-4d7c-bd0c-e34b19da4e66\", \"source\":\"/contoso/items\", \"subject\": \"\", \"data\": \"stringdata\", \"type\": \"Contoso.Items.ItemReceived\", \"time\": \"2018-01-25T22:12:19.4556811Z\", \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); BinaryData binaryEventData = events[0].Data; @@ -1566,7 +1566,7 @@ public void ConsumeCloudEventWithStringData() public void ConsumeCloudEventAppConfigurationKeyValueDeletedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"source\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.Maps/test1\", \"subject\": \"test1\", \"type\": \"Microsoft.AppConfiguration.KeyValueDeleted\",\"time\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"key\":\"key1\",\"label\":\"label1\",\"etag\":\"etag1\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1580,7 +1580,7 @@ public void ConsumeCloudEventAppConfigurationKeyValueDeletedEvent() public void ConsumeCloudEventAppConfigurationKeyValueModifiedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"source\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.Maps/test1\", \"subject\": \"test1\", \"type\": \"Microsoft.AppConfiguration.KeyValueModified\",\"time\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"key\":\"key1\",\"label\":\"label1\",\"etag\":\"etag1\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1597,7 +1597,7 @@ public void ConsumeCloudEventContainerRegistryImagePushedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"source\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.ContainerRegistry/test1\", \"subject\": \"test1\", \"type\": \"Microsoft.ContainerRegistry.ImagePushed\", \"time\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"id\":\"eventID\",\"timestamp\":\"2018-06-20T12:00:33.6125843-07:00\",\"action\":\"testaction\",\"target\":{\"mediaType\":\"test\",\"size\":20,\"digest\":\"digest1\",\"length\":20,\"repository\":\"test\",\"url\":\"url1\",\"tag\":\"test\"},\"request\":{\"id\":\"id\",\"addr\":\"127.0.0.1\",\"host\":\"test\",\"method\":\"method1\",\"useragent\":\"useragent1\"},\"actor\":{\"name\":\"testactor\"},\"source\":{\"addr\":\"127.0.0.1\",\"instanceID\":\"id\"}}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1612,7 +1612,7 @@ public void ConsumeCloudEventContainerRegistryImageDeletedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"source\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.ContainerRegistry/test1\", \"subject\": \"test1\", \"type\": \"Microsoft.ContainerRegistry.ImageDeleted\", \"time\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"id\":\"eventID\",\"timestamp\":\"2018-06-20T12:00:33.6125843-07:00\",\"action\":\"testaction\",\"target\":{\"mediaType\":\"test\",\"size\":20,\"digest\":\"digest1\",\"length\":20,\"repository\":\"test\",\"url\":\"url1\",\"tag\":\"test\"},\"request\":{\"id\":\"id\",\"addr\":\"127.0.0.1\",\"host\":\"test\",\"method\":\"method1\",\"useragent\":\"useragent1\"},\"actor\":{\"name\":\"testactor\"},\"source\":{\"addr\":\"127.0.0.1\",\"instanceID\":\"id\"}}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1627,7 +1627,7 @@ public void ConsumeCloudEventContainerRegistryChartDeletedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"source\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.ContainerRegistry/test1\", \"subject\": \"test1\", \"type\": \"Microsoft.ContainerRegistry.ChartDeleted\", \"time\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"id\":\"id\",\"timestamp\":\"2018-06-20T12:00:33.6125843-07:00\",\"action\":\"action1\",\"target\":{\"mediaType\":\"mediatype1\",\"size\":20,\"digest\":\"digest1\",\"repository\":null,\"tag\":null,\"name\":\"name1\",\"version\":null}}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1639,7 +1639,7 @@ public void ConsumeCloudEventContainerRegistryChartPushedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"source\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.ContainerRegistry/test1\", \"subject\": \"test1\", \"type\": \"Microsoft.ContainerRegistry.ChartPushed\", \"time\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"id\":\"id\",\"timestamp\":\"2018-06-20T12:00:33.6125843-07:00\",\"action\":\"action1\",\"target\":{\"mediaType\":\"mediatype1\",\"size\":40,\"digest\":\"digest1\",\"repository\":null,\"tag\":null,\"name\":\"name1\",\"version\":null}}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1653,7 +1653,7 @@ public void ConsumeCloudEventIoTHubDeviceCreatedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"id\": \"2da5e9b4-4e38-04c1-cc58-9da0b37230c0\", \"source\": \"/SUBSCRIPTIONS/BDF55CDD-8DAB-4CF4-9B2F-C21E8A780472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/EGTESTHUB1\", \"subject\": \"devices/48e44e11-1437-4907-83b1-4a8d7e89859e\", \"type\": \"Microsoft.Devices.DeviceCreated\", \"time\": \"2018-07-03T23:20:07.6532054Z\", \"data\": { \"twin\": { \"deviceId\": \"48e44e11-1437-4907-83b1-4a8d7e89859e\", \"etag\": \"AAAAAAAAAAE=\", \"deviceEtag\": null, \"status\": \"enabled\", \"statusUpdateTime\": \"0001-01-01T00:00:00\", \"connectionState\": \"Disconnected\", \"lastActivityTime\": \"0001-01-01T00:00:00\", \"cloudToDeviceMessageCount\": 0, \"authenticationType\": \"sas\", \"x509Thumbprint\": { \"primaryThumbprint\": null, \"secondaryThumbprint\": null }, \"version\": 2, \"properties\": { \"desired\": { \"$metadata\": { \"$lastUpdated\": \"2018-07-03T23:20:07.6532054Z\" }, \"$version\": 1 }, \"reported\": { \"$metadata\": { \"$lastUpdated\": \"2018-07-03T23:20:07.6532054Z\" }, \"$version\": 1 } } }, \"hubName\": \"EGTESTHUB1\", \"deviceId\": \"48e44e11-1437-4907-83b1-4a8d7e89859e\" }}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1665,7 +1665,7 @@ public void ConsumeCloudEventIoTHubDeviceDeletedEvent() { string requestContent = "[ {\"specversion\": \"1.0\", \"id\": \"aaaf95c6-ed99-b307-e321-81d8e4f731a6\", \"source\": \"/SUBSCRIPTIONS/BDF55CDD-8DAB-4CF4-9B2F-C21E8A780472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/EGTESTHUB1\", \"subject\": \"devices/48e44e11-1437-4907-83b1-4a8d7e89859e\", \"type\": \"Microsoft.Devices.DeviceDeleted\", \"time\": \"2018-07-03T23:21:33.2753956Z\", \"data\": { \"twin\": { \"deviceId\": \"48e44e11-1437-4907-83b1-4a8d7e89859e\", \"etag\": \"AAAAAAAAAAI=\", \"deviceEtag\": null, \"status\": \"enabled\", \"statusUpdateTime\": \"0001-01-01T00:00:00\", \"connectionState\": \"Disconnected\", \"lastActivityTime\": \"0001-01-01T00:00:00\", \"cloudToDeviceMessageCount\": 0, \"authenticationType\": \"sas\", \"x509Thumbprint\": { \"primaryThumbprint\": null, \"secondaryThumbprint\": null }, \"version\": 3, \"tags\": { \"testKey\": \"testValue\" }, \"properties\": { \"desired\": { \"$metadata\": { \"$lastUpdated\": \"2018-07-03T23:20:07.6532054Z\" }, \"$version\": 1 }, \"reported\": { \"$metadata\": { \"$lastUpdated\": \"2018-07-03T23:20:07.6532054Z\" }, \"$version\": 1 } } }, \"hubName\": \"EGTESTHUB1\", \"deviceId\": \"48e44e11-1437-4907-83b1-4a8d7e89859e\" }}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1677,7 +1677,7 @@ public void ConsumeCloudEventIoTHubDeviceConnectedEvent() { string requestContent = "[ {\"specversion\": \"1.0\", \"id\": \"fbfd8ee1-cf78-74c6-dbcf-e1c58638ccbd\", \"source\": \"/SUBSCRIPTIONS/BDF55CDD-8DAB-4CF4-9B2F-C21E8A780472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/EGTESTHUB1\", \"subject\": \"devices/48e44e11-1437-4907-83b1-4a8d7e89859e\", \"type\": \"Microsoft.Devices.DeviceConnected\", \"time\": \"2018-07-03T23:20:11.6921933+00:00\", \"data\": { \"deviceConnectionStateEventInfo\": { \"sequenceNumber\": \"000000000000000001D4132452F67CE200000002000000000000000000000001\" }, \"hubName\": \"EGTESTHUB1\", \"deviceId\": \"48e44e11-1437-4907-83b1-4a8d7e89859e\", \"moduleId\": \"\" }}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1689,7 +1689,7 @@ public void ConsumeCloudEventIoTHubDeviceDisconnectedEvent() { string requestContent = "[ { \"specversion\": \"1.0\", \"id\": \"877f0b10-a086-98ec-27b8-6ae2dfbf5f67\", \"source\": \"/SUBSCRIPTIONS/BDF55CDD-8DAB-4CF4-9B2F-C21E8A780472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/EGTESTHUB1\", \"subject\": \"devices/48e44e11-1437-4907-83b1-4a8d7e89859e\", \"type\": \"Microsoft.Devices.DeviceDisconnected\", \"time\": \"2018-07-03T23:20:52.646434+00:00\", \"data\": { \"deviceConnectionStateEventInfo\": { \"sequenceNumber\": \"000000000000000001D4132452F67CE200000002000000000000000000000002\" }, \"hubName\": \"EGTESTHUB1\", \"deviceId\": \"48e44e11-1437-4907-83b1-4a8d7e89859e\", \"moduleId\": \"\" }}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1701,7 +1701,7 @@ public void ConsumeCloudEventIoTHubDeviceTelemetryEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"id\": \"877f0b10-a086-98ec-27b8-6ae2dfbf5f67\", \"source\": \"/SUBSCRIPTIONS/BDF55CDD-8DAB-4CF4-9B2F-C21E8A780472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/EGTESTHUB1\", \"subject\": \"devices/48e44e11-1437-4907-83b1-4a8d7e89859e\", \"type\": \"Microsoft.Devices.DeviceTelemetry\", \"time\": \"2018-07-03T23:20:52.646434+00:00\", \"data\": { \"body\": { \"Weather\": { \"Temperature\": 900 }, \"Location\": \"USA\" }, \"properties\": { \"Status\": \"Active\" }, \"systemProperties\": { \"iothub-content-type\": \"application/json\", \"iothub-content-encoding\": \"utf-8\" } }} ]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1715,7 +1715,7 @@ public void ConsumeCloudEventEventGridSubscriptionValidationEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"id\": \"2d1781af-3a4c-4d7c-bd0c-e34b19da4e66\", \"source\": \"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", \"subject\": \"\", \"data\": { \"validationCode\": \"512d38b6-c7b8-40c8-89fe-f46f9e9622b6\", \"validationUrl\": \"https://rp-eastus2.eventgrid.azure.net:553/eventsubscriptions/estest/validate?id=B2E34264-7D71-453A-B5FB-B62D0FDC85EE&t=2018-04-26T20:30:54.4538837Z&apiVersion=2018-05-01-preview&token=1BNqCxBBSSE9OnNSfZM4%2b5H9zDegKMY6uJ%2fO2DFRkwQ%3d\" }, \"type\": \"Microsoft.EventGrid.SubscriptionValidationEvent\", \"time\": \"2018-01-25T22:12:19.4556811Z\", \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1727,7 +1727,7 @@ public void ConsumeCloudEventEventGridSubscriptionDeletedEvent() { string requestContent = "[{ \"id\": \"2d1781af-3a4c-4d7c-bd0c-e34b19da4e66\", \"source\": \"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", \"subject\": \"\", \"data\": { \"eventSubscriptionId\": \"/subscriptions/id/resourceGroups/rg/providers/Microsoft.EventGrid/topics/topic1/providers/Microsoft.EventGrid/eventSubscriptions/eventsubscription1\" }, \"type\": \"Microsoft.EventGrid.SubscriptionDeletedEvent\", \"time\": \"2018-01-25T22:12:19.4556811Z\", \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1741,7 +1741,7 @@ public void ConsumeCloudEventEventHubCaptureFileCreatedEvent() { string requestContent = "[ { \"source\": \"/subscriptions/guid/resourcegroups/rgDataMigrationSample/providers/Microsoft.EventHub/namespaces/tfdatamigratens\", \"subject\": \"eventhubs/hubdatamigration\", \"type\": \"microsoft.EventHUB.CaptureFileCreated\", \"time\": \"2017-08-31T19:12:46.0498024Z\", \"id\": \"14e87d03-6fbf-4bb2-9a21-92bd1281f247\", \"data\": { \"fileUrl\": \"https://tf0831datamigrate.blob.core.windows.net/windturbinecapture/tfdatamigratens/hubdatamigration/1/2017/08/31/19/11/45.avro\", \"fileType\": \"AzureBlockBlob\", \"partitionId\": \"1\", \"sizeInBytes\": 249168, \"eventCount\": 1500, \"firstSequenceNumber\": 2400, \"lastSequenceNumber\": 3899, \"firstEnqueueTime\": \"2017-08-31T19:12:14.674Z\", \"lastEnqueueTime\": \"2017-08-31T19:12:44.309Z\" }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1754,7 +1754,7 @@ public void ConsumeCloudEventEventHubCaptureFileCreatedEvent() public void ConsumeCloudEventMachineLearningServicesModelRegisteredEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\":\"/subscriptions/a5fe3bc5-98f0-4c84-affc-a589f54d9b23/resourceGroups/jenns/providers/Microsoft.MachineLearningServices/workspaces/jenns-canary\",\"type\":\"Microsoft.MachineLearningServices.ModelRegistered\",\"source\":\"models/sklearn_regression_model:3\",\"time\":\"2019-10-17T22:23:57.5350054+00:00\",\"id\":\"3b73ee51-bbf4-480d-9112-cfc23b41bfdb\",\"data\":{\"modelName\":\"sklearn_regression_model\",\"modelVersion\":\"3\",\"modelTags\":{\"area\":\"diabetes\",\"type\":\"regression\"},\"modelProperties\":{\"area\":\"test\"}}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1774,7 +1774,7 @@ public void ConsumeCloudEventMachineLearningServicesModelRegisteredEvent() public void ConsumeCloudEventMachineLearningServicesModelDeployedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\":\"/subscriptions/a5fe3bc5-98f0-4c84-affc-a589f54d9b23/resourceGroups/jenns/providers/Microsoft.MachineLearningServices/workspaces/jenns-canary\",\"type\":\"Microsoft.MachineLearningServices.ModelDeployed\",\"subject\":\"endpoints/aciservice1\",\"time\":\"2019-10-23T18:20:08.8824474+00:00\",\"id\":\"40d0b167-be44-477b-9d23-a2befba7cde0\",\"data\":{\"serviceName\":\"aciservice1\",\"serviceComputeType\":\"ACI\",\"serviceTags\":{\"mytag\":\"test tag\"},\"serviceProperties\":{\"myprop\":\"test property\"},\"modelIds\":\"my_first_model:1,my_second_model:1\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1786,7 +1786,7 @@ public void ConsumeCloudEventMachineLearningServicesModelDeployedEvent() public void ConsumeCloudEventMachineLearningServicesRunCompletedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\":\"/subscriptions/a5fe3bc5-98f0-4c84-affc-a589f54d9b23/resourceGroups/jenns/providers/Microsoft.MachineLearningServices/workspaces/jenns-canary\",\"type\":\"Microsoft.MachineLearningServices.RunCompleted\",\"subject\":\"experiments/0fa9dfaa-cba3-4fa7-b590-23e48548f5c1/runs/AutoML_ad912b2d-6467-4f32-a616-dbe4af6dd8fc\",\"time\":\"2019-10-18T19:29:55.8856038+00:00\",\"id\":\"044ac44d-462c-4043-99eb-d9e01dc760ab\",\"data\":{\"experimentId\":\"0fa9dfaa-cba3-4fa7-b590-23e48548f5c1\",\"experimentName\":\"automl-local-regression\",\"runId\":\"AutoML_ad912b2d-6467-4f32-a616-dbe4af6dd8fc\",\"runType\":\"automl\",\"RunTags\":{\"experiment_status\":\"ModelSelection\",\"experiment_status_descr\":\"Beginning model selection.\"},\"runProperties\":{\"num_iterations\":\"10\",\"target\":\"local\"}}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1798,7 +1798,7 @@ public void ConsumeCloudEventMachineLearningServicesRunCompletedEvent() public void ConsumeCloudEventMachineLearningServicesRunStatusChangedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\":\"/subscriptions/a5fe3bc5-98f0-4c84-affc-a589f54d9b23/resourceGroups/jenns/providers/Microsoft.MachineLearningServices/workspaces/jenns-canary\",\"type\":\"Microsoft.MachineLearningServices.RunStatusChanged\",\"subject\":\"experiments/0fa9dfaa-cba3-4fa7-b590-23e48548f5c1/runs/AutoML_ad912b2d-6467-4f32-a616-dbe4af6dd8fc\",\"time\":\"2020-03-09T23:53:04.4579724Z\",\"id\":\"aa8cd7df-fe28-5d5d-9b40-3342dbc2a887\",\"data\":{\"runStatus\": \"Running\",\"experimentId\":\"0fa9dfaa-cba3-4fa7-b590-23e48548f5c1\",\"experimentName\":\"automl-local-regression\",\"runId\":\"AutoML_ad912b2d-6467-4f32-a616-dbe4af6dd8fc\",\"runType\":\"automl\",\"runTags\":{\"experiment_status\":\"ModelSelection\",\"experiment_status_descr\":\"Beginning model selection.\"},\"runProperties\":{\"num_iterations\":\"10\",\"target\":\"local\"}}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1813,7 +1813,7 @@ public void ConsumeCloudEventMachineLearningServicesRunStatusChangedEvent() public void ConsumeCloudEventMachineLearningServicesDatasetDriftDetectedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\":\"/subscriptions/60582a10-b9fd-49f1-a546-c4194134bba8/resourceGroups/copetersRG/providers/Microsoft.MachineLearningServices/workspaces/driftDemoWS\",\"type\":\"Microsoft.MachineLearningServices.DatasetDriftDetected\",\"subject\":\"datadrift/01d29aa4-e6a4-470a-9ef3-66660d21f8ef/run/01d29aa4-e6a4-470a-9ef3-66660d21f8ef_1571590300380\",\"time\":\"2019-10-20T17:08:08.467191+00:00\",\"id\":\"2684de79-b145-4dcf-ad2e-6a1db798585f\",\"data\":{\"dataDriftId\":\"01d29aa4-e6a4-470a-9ef3-66660d21f8ef\",\"dataDriftName\":\"copetersDriftMonitor3\",\"runId\":\"01d29aa4-e6a4-470a-9ef3-66660d21f8ef_1571590300380\",\"baseDatasetId\":\"3c56d136-0f64-4657-a0e8-5162089a88a3\",\"tarAsSystemEventDatasetId\":\"d7e74d2e-c972-4266-b5fb-6c9c182d2a74\",\"driftCoefficient\":0.8350349068479208,\"startTime\":\"2019-07-04T00:00:00+00:00\",\"endTime\":\"2019-07-05T00:00:00+00:00\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1826,7 +1826,7 @@ public void ConsumeCloudEventMachineLearningServicesDatasetDriftDetectedEvent() public void ConsumeCloudEventMapsGeofenceEnteredEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"source\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.Maps/test1\", \"subject\": \"test1\", \"type\": \"Microsoft.Maps.GeofenceEntered\",\"time\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"expiredGeofenceGeometryId\":[\"id1\",\"id2\"],\"geometries\":[{\"deviceId\":\"id1\",\"distance\":1.0,\"geometryId\":\"gid1\",\"nearestLat\":72.4,\"nearestLon\":100.4,\"udId\":\"id22\"}],\"invalidPeriodGeofenceGeometryId\":[\"id1\",\"id2\"],\"isEventPublished\":true}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1837,7 +1837,7 @@ public void ConsumeCloudEventMapsGeofenceEnteredEvent() public void ConsumeCloudEventMapsGeofenceExitedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"source\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.Maps/test1\", \"subject\": \"test1\", \"type\": \"Microsoft.Maps.GeofenceExited\",\"time\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"expiredGeofenceGeometryId\":[\"id1\",\"id2\"],\"geometries\":[{\"deviceId\":\"id1\",\"distance\":1.0,\"geometryId\":\"gid1\",\"nearestLat\":72.4,\"nearestLon\":100.4,\"udId\":\"id22\"}],\"invalidPeriodGeofenceGeometryId\":[\"id1\",\"id2\"],\"isEventPublished\":true}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1848,7 +1848,7 @@ public void ConsumeCloudEventMapsGeofenceExitedEvent() public void ConsumeCloudEventMapsGeofenceResultEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"id\": \"56afc886-767b-d359-d59e-0da7877166b2\", \"source\": \"/SUBSCRIPTIONS/ID/RESOURCEGROUPS/rg/PROVIDERS/MICROSOFT.Maps/test1\", \"subject\": \"test1\", \"type\": \"Microsoft.Maps.GeofenceResult\",\"time\": \"2018-01-02T19:17:44.4383997Z\", \"data\": {\"expiredGeofenceGeometryId\":[\"id1\",\"id2\"],\"geometries\":[{\"deviceId\":\"id1\",\"distance\":1.0,\"geometryId\":\"gid1\",\"nearestLat\":72.4,\"nearestLon\":100.4,\"udId\":\"id22\"}],\"invalidPeriodGeofenceGeometryId\":[\"id1\",\"id2\"],\"isEventPublished\":true}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1861,7 +1861,7 @@ public void ConsumeCloudEventMapsGeofenceResultEvent() public void ConsumeCloudEventMediaMediaJobStateChangeEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"type\": \"Microsoft.Media.JobStateChange\", \"time\": \"2018-10-12T15:14:20.2412317\", \"id\": \"341520d0-dac0-4930-97dd-3085538c624f\", \"data\": { \"previousState\": \"Scheduled\", \"state\": \"Processing\", \"correlationData\": {} }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1874,7 +1874,7 @@ public void ConsumeCloudEventMediaJobOutputStateChangeEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"type\": \"Microsoft.Media.JobOutputStateChange\", \"time\": \"2018-10-12T15:14:17.8962704\", \"id\": \"8d0305c0-28c0-4cc9-b613-776e4dd31e9a\", \"data\": { \"previousState\": \"Scheduled\", \"output\": { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"error\": {\"code\":\"ServiceError\", \"message\":\"error message\", \"category\":\"Service\", \"retry\":\"DoNotRetry\", \"details\":[{\"code\":\"code\", \"message\":\"Service Error Message\"}]}, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 0, \"state\": \"Processing\" }, \"jobCorrelationData\": {} }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1890,7 +1890,7 @@ public void ConsumeCloudEventMediaJobScheduledEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"type\": \"Microsoft.Media.JobScheduled\", \"time\": \"2018-10-12T15:14:11.3028183\", \"id\": \"9b17dbf0-355d-4fb0-9a73-e76b150858c8\", \"data\": { \"previousState\": \"Queued\", \"state\": \"Scheduled\", \"correlationData\": {} }}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1903,7 +1903,7 @@ public void ConsumeCloudEventMediaJobProcessingEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"type\": \"Microsoft.Media.JobProcessing\", \"time\": \"2018-10-12T15:14:20.2412317\", \"id\": \"72162c44-c7f4-437a-9592-48b83cec2d18\", \"data\": { \"previousState\": \"Scheduled\", \"state\": \"Processing\", \"correlationData\": {} }}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1916,7 +1916,7 @@ public void ConsumeCloudEventMediaJobCancelingEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-7a8215f9-0f8d-48a6-82ed-1ead772bc221\", \"type\": \"Microsoft.Media.JobCanceling\", \"time\": \"2018-10-12T15:41:50.5513295\", \"id\": \"1f9a488b-abe3-4fca-80b8-aae59bf7f123\", \"data\": { \"previousState\": \"Processing\", \"state\": \"Canceling\", \"correlationData\": {} }}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1928,7 +1928,7 @@ public void ConsumeCloudEventMediaJobCancelingEvent() public void ConsumeCloudEventMediaJobFinishedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-298338bb-f8d1-4d0f-9fde-544e0ac4d983\", \"type\": \"Microsoft.Media.JobFinished\", \"time\": \"2018-10-01T20:58:26.7886175\", \"id\": \"83f8464d-be94-48e5-b67b-46c6199fe28e\", \"data\": { \"outputs\": [ { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-298338bb-f8d1-4d0f-9fde-544e0ac4d983\", \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 100, \"state\": \"Finished\" } ], \"previousState\": \"Processing\", \"state\": \"Finished\", \"correlationData\": {} } }]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1950,7 +1950,7 @@ public void ConsumeCloudEventMediaJobCanceledEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-7a8215f9-0f8d-48a6-82ed-1ead772bc221\", \"type\": \"Microsoft.Media.JobCanceled\", \"time\": \"2018-10-12T15:42:05.6519929\", \"id\": \"3fef7871-f916-4980-8a45-e79a2675808b\", \"data\": { \"outputs\": [ { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-7a8215f9-0f8d-48a6-82ed-1ead772bc221\", \"error\": {\"code\":\"ServiceError\", \"message\":\"error message\", \"category\":\"Service\", \"retry\":\"DoNotRetry\", \"details\":[{\"code\":\"code\", \"message\":\"Service Error Message\"}]}, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 83, \"state\": \"Canceled\" } ], \"previousState\": \"Canceling\", \"state\": \"Canceled\", \"correlationData\": {} }}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1973,7 +1973,7 @@ public void ConsumeCloudEventMediaJobErroredEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"type\": \"Microsoft.Media.JobErrored\", \"time\": \"2018-10-12T15:29:20.9954767\", \"id\": \"2749e9cf-4095-4723-9bc5-df8e15289135\", \"data\": { \"outputs\": [ { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"error\": { \"category\": \"Service\", \"code\": \"ServiceError\", \"details\": [ { \"code\": \"Internal\", \"message\": \"Internal error in initializing the task for processing\" } ], \"message\": \"Fatal service error, please contact support.\", \"retry\": \"DoNotRetry\" }, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 83, \"state\": \"Error\" } ], \"previousState\": \"Processing\", \"state\": \"Error\", \"correlationData\": {} }}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -1995,7 +1995,7 @@ public void ConsumeCloudEventMediaJobOutputCanceledEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-7a8215f9-0f8d-48a6-82ed-1ead772bc221\", \"type\": \"Microsoft.Media.JobOutputCanceled\", \"time\": \"2018-10-12T15:42:04.949555\", \"id\": \"9297cda2-4a50-4622-a679-c3785d27d512\", \"data\": { \"previousState\": \"Canceling\", \"output\": { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-7a8215f9-0f8d-48a6-82ed-1ead772bc221\", \"error\": {\"code\":\"ServiceError\", \"message\":\"error message\", \"category\":\"Service\", \"retry\":\"DoNotRetry\", \"details\":[{\"code\":\"code\", \"message\":\"Service Error Message\"}]}, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 83, \"state\": \"Canceled\" }, \"jobCorrelationData\": {} }}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2011,7 +2011,7 @@ public void ConsumeCloudEventMediaJobOutputCancelingEvent() { string requestContent = "{ \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-7a8215f9-0f8d-48a6-82ed-1ead772bc221\", \"type\": \"Microsoft.Media.JobOutputCanceling\", \"time\": \"2018-10-12T15:42:04.949555\", \"id\": \"9297cda2-4a50-4622-a679-c3785d27d512\", \"data\": { \"previousState\": \"Processing\", \"output\": { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-7a8215f9-0f8d-48a6-82ed-1ead772bc221\", \"error\": { \"category\": \"Service\", \"code\": \"ServiceError\", \"details\": [ { \"code\": \"Internal\", \"message\": \"Internal error in initializing the task for processing\" } ], \"message\": \"Fatal service error, please contact support.\", \"retry\": \"DoNotRetry\" }, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 83, \"state\": \"Canceling\" }, \"jobCorrelationData\": {} }, \"specversion\": \"1.0\"}"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2027,7 +2027,7 @@ public void ConsumeCloudEventMediaJobOutputErroredEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"type\": \"Microsoft.Media.JobOutputErrored\", \"time\": \"2018-10-12T15:29:20.2621252\", \"id\": \"bc9e6342-f081-49c2-a579-92f506a622c2\", \"data\": { \"previousState\": \"Processing\", \"output\": { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"error\": { \"category\": \"Service\", \"code\": \"ServiceError\", \"details\": [ { \"code\": \"Internal\", \"message\": \"Internal error in initializing the task for processing\" } ], \"message\": \"Fatal service error, please contact support.\", \"retry\": \"DoNotRetry\" }, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 83, \"state\": \"Error\" }, \"jobCorrelationData\": {} }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2046,7 +2046,7 @@ public void ConsumeCloudEventMediaJobOutputFinishedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"type\": \"Microsoft.Media.JobOutputFinished\", \"time\": \"2018-10-12T15:29:20.2621252\", \"id\": \"bc9e6342-f081-49c2-a579-92f506a622c2\", \"data\": { \"previousState\": \"Processing\", \"output\": { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 100, \"state\": \"Finished\" }, \"jobCorrelationData\": {} }}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2066,7 +2066,7 @@ public void ConsumeCloudEventMediaJobOutputProcessingEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"type\": \"Microsoft.Media.JobOutputProcessing\", \"time\": \"2018-10-12T15:14:17.8962704\", \"id\": \"d48eeb0b-2bfa-4265-a2f8-624654c3781c\", \"data\": { \"previousState\": \"Scheduled\", \"output\": { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"error\": { \"category\": \"Service\", \"code\": \"ServiceError\", \"details\": [ { \"code\": \"Internal\", \"message\": \"Internal error in initializing the task for processing\" } ], \"message\": \"Fatal service error, please contact support.\", \"retry\": \"DoNotRetry\" }, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 0, \"state\": \"Processing\" }, \"jobCorrelationData\": {} }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2082,7 +2082,7 @@ public void ConsumeCloudEventMediaJobOutputScheduledEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"type\": \"Microsoft.Media.JobOutputScheduled\", \"time\": \"2018-10-12T15:14:11.2244618\", \"id\": \"635ca6ea-5306-4590-b2e1-22f172759336\", \"data\": { \"previousState\": \"Queued\", \"output\": { \"@odata.type\": \"#Microsoft.Media.JobOutputAsset\", \"assetName\": \"output-2ac2fe75-6557-4de5-ab25-5713b74a6901\", \"error\": { \"category\": \"Service\", \"code\": \"ServiceError\", \"details\": [ { \"code\": \"Internal\", \"message\": \"Internal error in initializing the task for processing\" } ], \"message\": \"Fatal service error, please contact support.\", \"retry\": \"DoNotRetry\" }, \"label\": \"VideoAnalyzerPreset_0\", \"progress\": 0, \"state\": \"Scheduled\" }, \"jobCorrelationData\": {} }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2096,7 +2096,7 @@ public void ConsumeCloudEventMediaJobOutputProgressEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"transforms/VideoAnalyzerTransform/jobs/job-2ac2fe75-6557-4de5-ab25-5713b74a6981\", \"type\": \"Microsoft.Media.JobOutputProgress\", \"time\": \"2018-10-12T15:14:11.2244618\", \"id\": \"635ca6ea-5306-4590-b2e1-22f172759336\", \"data\": { \"jobCorrelationData\": { \"Field1\": \"test1\", \"Field2\": \"test2\" }, \"label\": \"TestLabel\", \"progress\": 50 }}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2115,7 +2115,7 @@ public void ConsumeCloudEventMediaLiveEventEncoderConnectedEvent() { string requestContent = "[{ \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"type\": \"Microsoft.Media.LiveEventEncoderConnected\", \"time\": \"2018-10-12T15:52:04.2013501\", \"id\": \"3d1f5b26-c466-47e7-927b-900985e0c5d5\", \"data\": { \"ingestUrl\": \"rtmp://liveevent-ec9d26a8.channel.media.azure.net:1935/live/cb5540b10a5646218c1328be95050c59\", \"streamId\": \"Mystream1\", \"encoderIp\": \"\", \"encoderPort\": \"3557\" }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2132,7 +2132,7 @@ public void ConsumeCloudEventMediaLiveEventConnectionRejectedEvent() { string requestContent = "[{ \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"type\": \"Microsoft.Media.LiveEventConnectionRejected\", \"time\": \"2018-10-12T15:52:04.2013501\", \"id\": \"3d1f5b26-c466-47e7-927b-900985e0c5d5\", \"data\": { \"ingestUrl\": \"rtmp://liveevent-ec9d26a8.channel.media.azure.net:1935/live/cb5540b10a5646218c1328be95050c59\", \"streamId\": \"Mystream1\", \"encoderIp\": \"\", \"encoderPort\": \"3557\", \"resultCode\": \"MPE_INGEST_CODEC_NOT_SUPPORTED\" }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2148,7 +2148,7 @@ public void ConsumeCloudEventMediaLiveEventConnectionRejectedEvent() public void ConsumeCloudEventMediaLiveEventEncoderDisconnectedEvent() { string requestContent = "[{ \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"type\": \"Microsoft.Media.LiveEventEncoderDisconnected\", \"time\": \"2018-10-12T15:52:19.8982128\", \"id\": \"e4b55140-42d2-4c24-b08e-9aa12f1587fc\", \"data\": { \"ingestUrl\": \"rtmp://liveevent-ec9d26a8.channel.media.azure.net:1935/live/cb5540b10a5646218c1328be95050c59\", \"streamId\": \"Mystream1\", \"encoderIp\": \"\", \"encoderPort\": \"3557\", \"resultCode\": \"MPE_CLIENT_TERMINATED_SESSION\" }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2167,7 +2167,7 @@ public void ConsumeCloudEventMediaLiveEventIncomingStreamReceivedEvent() { string requestContent = "[{ \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"type\": \"Microsoft.Media.LiveEventIncomingStreamReceived\", \"time\": \"2018-10-12T15:52:16.5726463Z\", \"id\": \"eb688fa1-5a19-4703-8aeb-6a65a09790da\", \"data\": { \"ingestUrl\": \"rtmp://liveevent-ec9d26a8.channel.media.azure.net:1935/live/cb5540b10a5646218c1328be95050c59\", \"trackType\": \"audio\", \"trackName\": \"audio_160000\", \"bitrate\": 160000, \"encoderIp\": \"\", \"encoderPort\": \"3557\", \"timestamp\": \"66\", \"duration\": \"1950\", \"timescale\": \"1000\" }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2189,7 +2189,7 @@ public void ConsumeCloudEventMediaLiveEventIncomingStreamsOutOfSyncEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"type\": \"Microsoft.Media.LiveEventIncomingStreamsOutOfSync\", \"time\": \"2018-10-12T15:52:37.3710102\", \"id\": \"d84727e2-d9c0-4a21-a66b-8d23f06b3e06\", \"data\": { \"minLastTimestamp\": \"10999\", \"typeOfStreamWithMinLastTimestamp\": \"video\", \"maxLastTimestamp\": \"100999\", \"typeOfStreamWithMaxLastTimestamp\": \"audio\", \"timescaleOfMinLastTimestamp\": \"1000\", \"timescaleOfMaxLastTimestamp\": \"1000\" }}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2208,7 +2208,7 @@ public void ConsumeCloudEventMediaLiveEventIncomingVideoStreamsOutOfSyncEvent() { string requestContent = "[{ \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"type\": \"Microsoft.Media.LiveEventIncomingVideoStreamsOutOfSync\", \"time\": \"2018-10-12T15:52:37.3710102\", \"id\": \"d84727e2-d9c0-4a21-a66b-8d23f06b3e06\", \"data\": { \"firstTimestamp\": \"10999\", \"firstDuration\": \"2000\", \"secondTimestamp\": \"100999\", \"secondDuration\": \"2000\", \"timescale\": \"1000\" }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2226,7 +2226,7 @@ public void ConsumeCloudEventMediaLiveEventIncomingDataChunkDroppedEvent() { string requestContent = "[{ \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"type\": \"Microsoft.Media.LiveEventIncomingDataChunkDropped\", \"time\": \"2018-10-12T15:52:37.3710102\", \"id\": \"d84727e2-d9c0-4a21-a66b-8d23f06b3e06\", \"data\": { \"timestamp\": \"8999\", \"trackType\": \"video\", \"trackName\": \"video1\", \"bitrate\": 2500000, \"timescale\": \"1000\", \"resultCode\": \"FragmentDrop_OverlapTimestamp\" }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2245,7 +2245,7 @@ public void ConsumeCloudEventMediaLiveEventIngestHeartbeatEvent() { string requestContent = "[{ \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"type\": \"Microsoft.Media.LiveEventIngestHeartbeat\", \"time\": \"2018-10-12T15:52:37.3710102\", \"id\": \"d84727e2-d9c0-4a21-a66b-8d23f06b3e06\", \"data\": { \"trackType\": \"video\", \"trackName\": \"video\", \"bitrate\": 2500000, \"incomingBitrate\": 500726, \"lastTimestamp\": \"11999\", \"timescale\": \"1000\", \"overlapCount\": 0, \"discontinuityCount\": 0, \"nonincreasingCount\": 0, \"unexpectedBitrate\": true, \"state\": \"Running\", \"healthy\": false }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2270,7 +2270,7 @@ public void ConsumeCloudEventMediaLiveEventTrackDiscontinuityDetectedEvent() { string requestContent = "[{\"specversion\": \"1.0\", \"source\": \"/subscriptions/{subscription id}/resourceGroups/{resource group}/providers/Microsoft.Media/mediaservices/{account name}\", \"subject\": \"liveEvent/liveevent-ec9d26a8\", \"type\": \"Microsoft.Media.LiveEventTrackDiscontinuityDetected\", \"time\": \"2018-10-12T15:52:37.3710102\", \"id\": \"d84727e2-d9c0-4a21-a66b-8d23f06b3e06\", \"data\": { \"trackType\": \"video\", \"trackName\": \"video\", \"bitrate\": 2500000, \"previousTimestamp\": \"10999\", \"newTimestamp\": \"14999\", \"timescale\": \"1000\", \"discontinuityGap\": \"4000\" }}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2292,7 +2292,7 @@ public void ConsumeCloudEventResourceWriteSuccessEvent() { string requestContent = "[ { \"source\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"type\":\"Microsoft.Resources.ResourceWriteSuccess\", \"time\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"specversion\": \"1.0\" }]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2306,7 +2306,7 @@ public void ConsumeCloudEventResourceWriteFailureEvent() { string requestContent = "[ { \"source\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"type\":\"Microsoft.Resources.ResourceWriteFailure\", \"time\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"specversion\": \"1.0\" }]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2319,7 +2319,7 @@ public void ConsumeCloudEventResourceWriteCancelEvent() { string requestContent = "[ { \"source\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"type\":\"Microsoft.Resources.ResourceWriteCancel\", \"time\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"specversion\": \"1.0\" }]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2331,7 +2331,7 @@ public void ConsumeCloudEventResourceDeleteSuccessEvent() { string requestContent = "[ { \"source\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"type\":\"Microsoft.Resources.ResourceDeleteSuccess\", \"time\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"specversion\": \"1.0\" }]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2343,7 +2343,7 @@ public void ConsumeCloudEventResourceDeleteFailureEvent() { string requestContent = "[ { \"source\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"type\":\"Microsoft.Resources.ResourceDeleteFailure\", \"time\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"specversion\": \"1.0\" }]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2355,7 +2355,7 @@ public void ConsumeCloudEventResourceDeleteCancelEvent() { string requestContent = "[ { \"source\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"type\":\"Microsoft.Resources.ResourceDeleteCancel\", \"time\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"specversion\": \"1.0\" }]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2367,7 +2367,7 @@ public void ConsumeCloudEventResourceActionSuccessEvent() { string requestContent = "[ { \"source\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"type\":\"Microsoft.Resources.ResourceActionSuccess\", \"time\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"specversion\": \"1.0\" }]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2379,7 +2379,7 @@ public void ConsumeCloudEventResourceActionFailureEvent() { string requestContent = "[ { \"source\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"type\":\"Microsoft.Resources.ResourceActionFailure\", \"time\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"specversion\": \"1.0\" }]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2391,7 +2391,7 @@ public void ConsumeCloudEventResourceActionCancelEvent() { string requestContent = "[ { \"source\":\"/subscriptions/{subscription-id}\", \"subject\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"type\":\"Microsoft.Resources.ResourceActionCancel\", \"time\":\"2017-08-16T03:54:38.2696833Z\", \"id\":\"25b3b0d0-d79b-44d5-9963-440d4e6a9bba\", \"data\": { \"authorization\":\"{azure_resource_manager_authorizations}\", \"claims\":\"{azure_resource_manager_claims}\", \"correlationId\":\"54ef1e39-6a82-44b3-abc1-bdeb6ce4d3c6\", \"httpRequest\":\"{request-operation}\", \"resourceProvider\":\"Microsoft.EventGrid\", \"resourceUri\":\"/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/eventSubscriptions/LogicAppdd584bdf-8347-49c9-b9a9-d1f980783501\", \"operationName\":\"Microsoft.EventGrid/eventSubscriptions/write\", \"status\":\"Succeeded\", \"subscriptionId\":\"{subscription-id}\", \"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\" }, \"specversion\": \"1.0\" }]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2405,7 +2405,7 @@ public void ConsumeCloudEventServiceBusActiveMessagesAvailableWithNoListenersEve { string requestContent = "[{ \"source\": \"/subscriptions/id/resourcegroups/rg/providers/Microsoft.ServiceBus/namespaces/testns1\", \"subject\": \"topics/topic1/subscriptions/sub1\", \"type\": \"Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners\", \"time\": \"2018-02-14T05:12:53.4133526Z\", \"id\": \"dede87b0-3656-419c-acaf-70c95ddc60f5\", \"data\": { \"namespaceName\": \"testns1\", \"requestUri\": \"https://testns1.servicebus.windows.net/t1/subscriptions/sub1/messages/head\", \"entityType\": \"subscriber\", \"queueName\": \"queue1\", \"topicName\": \"topic1\", \"subscriptionName\": \"sub1\" }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2417,7 +2417,7 @@ public void ConsumeCloudEventServiceBusDeadletterMessagesAvailableWithNoListener { string requestContent = "[{ \"source\": \"/subscriptions/id/resourcegroups/rg/providers/Microsoft.ServiceBus/namespaces/testns1\", \"subject\": \"topics/topic1/subscriptions/sub1\", \"type\": \"Microsoft.ServiceBus.DeadletterMessagesAvailableWithNoListener\", \"time\": \"2018-02-14T05:12:53.4133526Z\", \"id\": \"dede87b0-3656-419c-acaf-70c95ddc60f5\", \"data\": { \"namespaceName\": \"testns1\", \"requestUri\": \"https://testns1.servicebus.windows.net/t1/subscriptions/sub1/messages/head\", \"entityType\": \"subscriber\", \"queueName\": \"queue1\", \"topicName\": \"topic1\", \"subscriptionName\": \"sub1\" }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2431,7 +2431,7 @@ public void ConsumeCloudEventStorageBlobCreatedEvent() { string requestContent = "[ { \"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Storage/storageAccounts/myaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/file1.txt\", \"type\": \"Microsoft.Storage.BlobCreated\", \"time\": \"2017-08-16T01:57:26.005121Z\", \"id\": \"602a88ef-0001-00e6-1233-1646070610ea\", \"data\": { \"api\": \"PutBlockList\", \"clientRequestId\": \"799304a4-bbc5-45b6-9849-ec2c66be800a\", \"requestId\": \"602a88ef-0001-00e6-1233-164607000000\", \"eTag\": \"0x8D4E44A24ABE7F1\", \"contentType\": \"text/plain\", \"contentLength\": 447, \"blobType\": \"BlockBlob\", \"url\": \"https://myaccount.blob.core.windows.net/testcontainer/file1.txt\", \"sequencer\": \"00000000000000EB000000000000C65A\" }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2443,7 +2443,7 @@ public void ConsumeCloudEventStorageBlobDeletedEvent() { string requestContent = "[{ \"source\": \"/subscriptions/id/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testfile.txt\", \"type\": \"Microsoft.Storage.BlobDeleted\", \"time\": \"2017-11-07T20:09:22.5674003Z\", \"id\": \"4c2359fe-001e-00ba-0e04-58586806d298\", \"data\": { \"api\": \"DeleteBlob\", \"requestId\": \"4c2359fe-001e-00ba-0e04-585868000000\", \"contentType\": \"text/plain\", \"blobType\": \"BlockBlob\", \"url\": \"https://example.blob.core.windows.net/testcontainer/testfile.txt\", \"sequencer\": \"0000000000000281000000000002F5CA\", \"storageDiagnostics\": { \"batchId\": \"b68529f3-68cd-4744-baa4-3c0498ec19f0\" } }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2455,7 +2455,7 @@ public void ConsumeCloudEventStorageBlobRenamedEvent() { string requestContent = "[ { \"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Storage/storageAccounts/myaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testfile.txt\", \"type\": \"Microsoft.Storage.BlobRenamed\", \"time\": \"2017-08-16T01:57:26.005121Z\", \"id\": \"602a88ef-0001-00e6-1233-1646070610ea\", \"data\": { \"api\": \"RenameFile\", \"clientRequestId\": \"799304a4-bbc5-45b6-9849-ec2c66be800a\", \"requestId\": \"602a88ef-0001-00e6-1233-164607000000\", \"eTag\": \"0x8D4E44A24ABE7F1\", \"destinationUrl\": \"https://myaccount.blob.core.windows.net/testcontainer/testfile.txt\", \"sequencer\": \"00000000000000EB000000000000C65A\" }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2467,7 +2467,7 @@ public void ConsumeCloudEventStorageDirectoryCreatedEvent() { string requestContent = "[ { \"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Storage/storageAccounts/myaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testDir\", \"type\": \"Microsoft.Storage.DirectoryCreated\", \"time\": \"2017-08-16T01:57:26.005121Z\", \"id\": \"602a88ef-0001-00e6-1233-1646070610ea\", \"data\": { \"api\": \"CreateDirectory\", \"clientRequestId\": \"799304a4-bbc5-45b6-9849-ec2c66be800a\", \"requestId\": \"602a88ef-0001-00e6-1233-164607000000\", \"eTag\": \"0x8D4E44A24ABE7F1\", \"url\": \"https://myaccount.blob.core.windows.net/testcontainer/testDir\", \"sequencer\": \"00000000000000EB000000000000C65A\" }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2479,7 +2479,7 @@ public void ConsumeCloudEventStorageDirectoryDeletedEvent() { string requestContent = "[{ \"source\": \"/subscriptions/id/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testDir\", \"type\": \"Microsoft.Storage.DirectoryDeleted\", \"time\": \"2017-11-07T20:09:22.5674003Z\", \"id\": \"4c2359fe-001e-00ba-0e04-58586806d298\", \"data\": { \"api\": \"DeleteDirectory\", \"requestId\": \"4c2359fe-001e-00ba-0e04-585868000000\", \"url\": \"https://example.blob.core.windows.net/testcontainer/testDir\", \"sequencer\": \"0000000000000281000000000002F5CA\", \"storageDiagnostics\": { \"batchId\": \"b68529f3-68cd-4744-baa4-3c0498ec19f0\" } }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2491,7 +2491,7 @@ public void ConsumeCloudEventStorageDirectoryRenamedEvent() { string requestContent = "[{ \"source\": \"/subscriptions/id/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount\", \"subject\": \"/blobServices/default/containers/testcontainer/blobs/testDir\", \"type\": \"Microsoft.Storage.DirectoryRenamed\", \"time\": \"2017-11-07T20:09:22.5674003Z\", \"id\": \"4c2359fe-001e-00ba-0e04-58586806d298\", \"data\": { \"api\": \"RenameDirectory\", \"requestId\": \"4c2359fe-001e-00ba-0e04-585868000000\", \"destinationUrl\": \"https://example.blob.core.windows.net/testcontainer/testDir\", \"sequencer\": \"0000000000000281000000000002F5CA\", \"storageDiagnostics\": { \"batchId\": \"b68529f3-68cd-4744-baa4-3c0498ec19f0\" } }, \"specversion\": \"1.0\"}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2506,7 +2506,7 @@ public void ConsumeCloudEventWebAppUpdatedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"type\": \"Microsoft.Web.AppUpdated\", \"time\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"specversion\": \"1.0\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2519,7 +2519,7 @@ public void ConsumeCloudEventWebBackupOperationStartedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"type\": \"Microsoft.Web.BackupOperationStarted\", \"time\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"specversion\": \"1.0\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2532,7 +2532,7 @@ public void ConsumeCloudEventWebBackupOperationCompletedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"type\": \"Microsoft.Web.BackupOperationCompleted\", \"time\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"specversion\": \"1.0\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2545,7 +2545,7 @@ public void ConsumeCloudEventWebBackupOperationFailedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"type\": \"Microsoft.Web.BackupOperationFailed\", \"time\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"specversion\": \"1.0\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); Assert.AreEqual(siteName, (eventData as WebBackupOperationFailedEventData).Name); @@ -2557,7 +2557,7 @@ public void ConsumeCloudEventWebRestoreOperationStartedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"type\": \"Microsoft.Web.RestoreOperationStarted\", \"time\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"specversion\": \"1.0\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2570,7 +2570,7 @@ public void ConsumeCloudEventWebRestoreOperationCompletedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"type\": \"Microsoft.Web.RestoreOperationCompleted\", \"time\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"specversion\": \"1.0\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2583,7 +2583,7 @@ public void ConsumeCloudEventWebRestoreOperationFailedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"type\": \"Microsoft.Web.RestoreOperationFailed\", \"time\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"specversion\": \"1.0\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2596,7 +2596,7 @@ public void ConsumeCloudEventWebSlotSwapStartedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"type\": \"Microsoft.Web.SlotSwapStarted\", \"time\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"specversion\": \"1.0\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent, skipValidation: false); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent), skipValidation: false); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2609,7 +2609,7 @@ public void ConsumeCloudEventWebSlotSwapCompletedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"specversion\": \"1.0\", \"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"type\": \"Microsoft.Web.SlotSwapCompleted\", \"time\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}}}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2622,7 +2622,7 @@ public void ConsumeCloudEventWebSlotSwapFailedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"type\": \"Microsoft.Web.SlotSwapFailed\", \"time\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}}, \"specversion\": \"1.0\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2635,7 +2635,7 @@ public void ConsumeCloudEventWebSlotSwapWithPreviewStartedEvent() string siteName = "testSite01"; string requestContent = $"[{{\"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"type\": \"Microsoft.Web.SlotSwapWithPreviewStarted\", \"time\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}}, \"specversion\": \"1.0\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2648,7 +2648,7 @@ public void ConsumeCloudEventWebSlotSwapWithPreviewCancelledEvent() string siteName = "testSite01"; string requestContent = $"[{{\"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/sites/testSite01\", \"subject\": \"/Microsoft.Web/sites/testSite01\",\"type\": \"Microsoft.Web.SlotSwapWithPreviewCancelled\", \"time\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appEventTypeDetail\": {{ \"action\": \"Restarted\"}},\"name\": \"{siteName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}}, \"specversion\": \"1.0\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); @@ -2661,7 +2661,7 @@ public void ConsumeCloudEventWebAppServicePlanUpdatedEvent() string planName = "testPlan01"; string requestContent = $"[{{\"source\": \"/subscriptions/319a9601-1ec0-0000-aebc-8fe82724c81e/resourceGroups/testrg/providers/Microsoft.Web/serverfarms/testPlan01\", \"subject\": \"/Microsoft.Web/serverfarms/testPlan01\",\"type\": \"Microsoft.Web.AppServicePlanUpdated\", \"time\": \"2017-08-16T01:57:26.005121Z\",\"id\": \"602a88ef-0001-00e6-1233-1646070610ea\",\"data\": {{ \"appServicePlanEventTypeDetail\": {{ \"stampKind\": \"Public\",\"action\": \"Updated\",\"status\": \"Started\" }},\"name\": \"{planName}\",\"clientRequestId\": \"ce636635-2b81-4981-a9d4-cec28fb5b014\",\"correlationRequestId\": \"61baa426-c91f-4e58-b9c6-d3852c4d88d\",\"requestId\": \"0a4d5b5e-7147-482f-8e21-4219aaacf62a\",\"address\": \"/subscriptions/ef90e930-9d7f-4a60-8a99-748e0eea69de/resourcegroups/egcanarytest/providers/Microsoft.Web/sites/egtestapp/restart?api-version=2016-03-01\",\"verb\": \"POST\"}},\"specversion\": \"1.0\",\"specversion\": \"1.0\"}}]"; - CloudEvent[] events = CloudEvent.ParseEvents(requestContent); + CloudEvent[] events = CloudEvent.ParseMany(new BinaryData(requestContent)); Assert.NotNull(events); Assert.True(events[0].TryGetSystemEventData(out object eventData)); diff --git a/sdk/eventgrid/Azure.Messaging.EventGrid/tests/Samples/Sample2_ParseAndDeserializeEvents.cs b/sdk/eventgrid/Azure.Messaging.EventGrid/tests/Samples/Sample2_ParseAndDeserializeEvents.cs index 7a672653259b..93a050039381 100644 --- a/sdk/eventgrid/Azure.Messaging.EventGrid/tests/Samples/Sample2_ParseAndDeserializeEvents.cs +++ b/sdk/eventgrid/Azure.Messaging.EventGrid/tests/Samples/Sample2_ParseAndDeserializeEvents.cs @@ -13,24 +13,24 @@ namespace Azure.Messaging.EventGrid.Tests.Samples public partial class EventGridSamples : SamplesBase { // Example JSON payloads - private readonly string jsonPayloadSampleOne = "[{ \"id\": \"2d1781af-3a4c\", \"topic\": \"/examples/test/payload\", \"subject\": \"\", \"data\": { \"Name\": \"example\",\"Age\": 20 },\"eventType\": \"MyApp.Models.CustomEventType\",\"eventTime\": \"2018-01-25T22:12:19.4556811Z\",\"dataVersion\": \"1\"}]"; + private readonly BinaryData jsonPayloadSampleOne = new BinaryData("[{ \"id\": \"2d1781af-3a4c\", \"topic\": \"/examples/test/payload\", \"subject\": \"\", \"data\": { \"Name\": \"example\",\"Age\": 20 },\"eventType\": \"MyApp.Models.CustomEventType\",\"eventTime\": \"2018-01-25T22:12:19.4556811Z\",\"dataVersion\": \"1\"}]"); - private readonly string jsonPayloadSampleTwo = "[{ \"id\": \"2d1781af-3a4c\", \"source\": \"/examples/test/payload\", \"data\": { \"name\": \"example\",\"age\": 20 },\"type\": \"MyApp.Models.CustomEventType\",\"time\": \"2018-01-25T22:12:19.4556811Z\",\"specversion\": \"1.0\"}]"; + private readonly BinaryData jsonPayloadSampleTwo = new BinaryData("[{ \"id\": \"2d1781af-3a4c\", \"source\": \"/examples/test/payload\", \"data\": { \"name\": \"example\",\"age\": 20 },\"type\": \"MyApp.Models.CustomEventType\",\"time\": \"2018-01-25T22:12:19.4556811Z\",\"specversion\": \"1.0\"}]"); - // This sample demonstrates how to parse EventGridEvents from JSON and access event data using AsSystemEventData() + // This sample demonstrates how to parse EventGridEvents from JSON and access event data using TryGetSystemEventData [Test] public void NonGenericReceiveAndDeserializeEventGridEvents() { #region Snippet:EGEventParseJson - // Parse the JSON payload into a list of events using EventGridEvent.Parse - EventGridEvent[] egEvents = EventGridEvent.ParseEvents(jsonPayloadSampleOne); + // Parse the JSON payload into a list of events + EventGridEvent[] egEvents = EventGridEvent.ParseMany(jsonPayloadSampleOne); #endregion // Iterate over each event to access event properties and data #region Snippet:DeserializePayloadUsingAsSystemEventData foreach (EventGridEvent egEvent in egEvents) { - // If the event is a system event, TryGetSystemEventData() will return the deserialized system event + // If the event is a system event, TryGetSystemEventData will return the deserialized system event if (egEvent.TryGetSystemEventData(out object systemEvent)) { switch (systemEvent) @@ -68,7 +68,7 @@ public void NonGenericReceiveAndDeserializeEventGridEvents() #endregion } - // This sample demonstrates how to parse CloudEvents from JSON and access event data using GetData() + // This sample demonstrates how to parse CloudEvents from JSON and access event data using ToObjectFromJson [Test] public void GenericReceiveAndDeserializeEventGridEvents() { @@ -80,8 +80,8 @@ public void GenericReceiveAndDeserializeEventGridEvents() }); #region Snippet:CloudEventParseJson - // Parse the JSON payload into a list of events using CloudEvent.Parse - CloudEvent[] cloudEvents = CloudEvent.ParseEvents(jsonPayloadSampleTwo); + // Parse the JSON payload into a list of events + CloudEvent[] cloudEvents = CloudEvent.ParseMany(jsonPayloadSampleTwo); #endregion // Iterate over each event to access event properties and data diff --git a/sdk/eventgrid/Microsoft.Azure.WebJobs.Extensions.EventGrid/src/EventGridExtensionConfigProvider.cs b/sdk/eventgrid/Microsoft.Azure.WebJobs.Extensions.EventGrid/src/EventGridExtensionConfigProvider.cs index 73c3f630a2db..3da34bb0ca1d 100644 --- a/sdk/eventgrid/Microsoft.Azure.WebJobs.Extensions.EventGrid/src/EventGridExtensionConfigProvider.cs +++ b/sdk/eventgrid/Microsoft.Azure.WebJobs.Extensions.EventGrid/src/EventGridExtensionConfigProvider.cs @@ -75,8 +75,8 @@ public void Initialize(ExtensionConfigContext context) .AddConverter((jtoken) => jtoken.ToString(Formatting.Indented)) .AddConverter((jarray) => jarray.Select(ar => ar.ToString(Formatting.Indented)).ToArray()) .AddConverter((jtoken) => new DirectInvokeString(null)) - .AddConverter((jobject) => EventGridEvent.ParseEvents(jobject.ToString()).Single()) // surface the type to function runtime - .AddConverter((jobject) => EventGridEvent.ParseEvents(jobject.ToString())) // surface the type to function runtime + .AddConverter((jobject) => EventGridEvent.Parse(new BinaryData(jobject.ToString()))) // surface the type to function runtime + .AddConverter((jobject) => EventGridEvent.ParseMany(new BinaryData(jobject.ToString()))) // surface the type to function runtime .AddOpenConverter(typeof(JTokenToPocoConverter<>)) .AddOpenConverter(typeof(JTokenToPocoConverter<>)) .BindToTrigger(new EventGridTriggerAttributeBindingProvider(this)); @@ -84,8 +84,9 @@ public void Initialize(ExtensionConfigContext context) // Register the output binding var rule = context .AddBindingRule() - .AddConverter((str) => EventGridEvent.ParseEvents(str).Single()) - .AddConverter((jobject) => EventGridEvent.ParseEvents(jobject.ToString()).Single()); + //TODO - add binding for BinaryData? + .AddConverter((str) => EventGridEvent.Parse(new BinaryData(str))) + .AddConverter((jobject) => EventGridEvent.Parse(new BinaryData(jobject.ToString()))); rule.BindToCollector(_converter); rule.AddValidator((a, t) => {