public EventGridRequest <TEventData> DeconstructEventGridMessage <TEventData>(string requestBody) { // deserialise into a single Event Grid event - we won't allow multiple events to be processed var eventGridEvents = JsonConvert.DeserializeObject <EventGridEvent <TEventData>[]>(requestBody); if (eventGridEvents.Length == 0) { return(null); } if (eventGridEvents.Length > 1) { throw new InvalidOperationException("Expected only a single Event Grid event."); } var eventGridEvent = eventGridEvents.Single(); // convert the 'data' property to a strongly typed object rather than a JObject // eventGridEvent.Data = this.CreateStronglyTypedDataObject(eventGridEvent.Data, eventGridEvent.EventType); // find the user ID and item ID from the subject var eventGridEventSubjectComponents = eventGridEvent.Subject.Split('/'); if (eventGridEventSubjectComponents.Length != 2) { throw new InvalidOperationException("Event Grid event subject is not in expected format."); } var eventGridRequest = new EventGridRequest <TEventData>() { UserId = eventGridEventSubjectComponents[0], ItemId = eventGridEventSubjectComponents[1], Event = eventGridEvent, }; return(eventGridRequest); }
/// <summary> /// Gets a mocked event grid update transcription request. /// </summary> /// <returns>Mock http request that would come from the event grid for an audio created event.</returns> public static Mock <HttpRequest> GetMockEventGridAudioCreatedRequest() { var requestBody = new EventGridRequest <AudioCreatedEventData>() { UserId = Mockers.DefaultUserId, ItemId = Mockers.DefaultId, Event = new EventGridEvent <AudioCreatedEventData>() { Data = new AudioCreatedEventData() { Category = Mockers.DefaultId, }, EventTime = System.DateTime.Now, Id = System.Guid.NewGuid().ToString(), EventType = "AudioCreated", Subject = $"{Mockers.DefaultUserId}/{Mockers.DefaultId}", Topic = "faketopic", }, }; var headers = new HeaderDictionary(); return(Mockers.MockRequest(requestBody, headers)); }
private static void MockEventGridSubscriberServiceDeconstructResponse(Mock <IEventGridSubscriberService> mockEventGridSubscriberService) { EventGridRequest <AudioCreatedEventData> eventGridRequest = new EventGridRequest <AudioCreatedEventData>() { UserId = Mockers.DefaultUserId, ItemId = Mockers.DefaultId, Event = new EventGridEvent <AudioCreatedEventData>() { EventTime = System.DateTime.Now, EventType = "AudioCreated", Id = System.Guid.NewGuid().ToString(), Subject = $"{Mockers.DefaultUserId}/{Mockers.DefaultId}", Topic = "toco-events-topic", Data = new AudioCreatedEventData() { Category = "Test", }, }, }; mockEventGridSubscriberService .Setup(m => m.DeconstructEventGridMessage <AudioCreatedEventData>(It.IsAny <string>())) .Returns(eventGridRequest); }