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);
        }
Esempio n. 2
0
        /// <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));
        }
Esempio n. 3
0
        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);
        }